Bonjour,

Mes connaissances en développement sont surtout sur du WebForm ASP.NET C# et absolument rien en MVC.NET.
Je me suis donc lancé dans le développement en MVC d'une galerie photo toute simple, mais je bloque bêtement sur l'authentification (accès à une page d'admin et permettre l'upload d'images).
L'authentification, c'est ceci en plus simple (juste le coockie et l'implémentation de IPrincipal).

Mon problème se trouve au niveau des A/R entre vues, contrôleurs et "global.asax" :
  • Le contrôleur est bien appelé et le cookie bien enregistré.
  • La vue "PartialViewLogin" réagit correctement quand l'utilisateur est connecté
  • la méthode "Application_PostAuthenticateRequest" du Global.asax est appelé mais après le chargement de la vue, il faut que je rafraichisse à la main la page pour la bonne réaction de la vue "PartialViewLogin"



Je peux mettre le code du Global.asax dans le contrôleur, mais cela ne doit pas être la bonne pratique.

Comment faire pour bien m'y prendre ?




Le Layout MASTER :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<body>
    <div id="global">
        <div id="entete">
            @{ Html.RenderAction("PartialViewLogin", "Account"); }
        </div>
        <div id="centre">
            <div id="navigation">
                @{ Html.RenderAction("PartialViewDir", "Home"); }
            </div>
            <div id="contenu">
                @RenderBody()
            </div>
        </div>
    </div>
 
    <input type="hidden" value='@ViewContext.RouteData.Values["id"]' id="routeDataId" />
</body>
La partie LOGIN :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@{
    if (User == null)
    {
        using (Html.BeginForm())
        {
            Html.AntiForgeryToken();
 
            <div class="form-horizontal " style="float: right;">
                <input type="submit" value="Login" class="btn btn-default" style="margin-left: 10px; float: right;" />
 
                @Html.LabelFor(model => model.Username, new { @class = "control-label " })
                @Html.EditorFor(model => model.Username)
                @Html.ValidationMessageFor(model => model.Username)
 
                @Html.LabelFor(model => model.Password, new { @class = "control-label " })
                @Html.EditorFor(model => model.Password)
                @Html.ValidationMessageFor(model => model.Password)
 
                @Html.ValidationSummary(true)
            </div>
        }
    }
    else
    {
        <div class="form-horizontal " style="float: right;">
            @Html.Label(@User.LastName)
            @Html.ActionLink("Déconnecter", "LogOut", "Account", null, new { @style="margin-left: 10px;" })
        </div>
    }
}


Seb