IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET MVC Discussion :

Authorize et Role avec MVC


Sujet :

ASP.NET MVC

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Authorize et Role avec MVC
    Bonjour,

    j'essaie d'utiliser l'attribut d'action [Authorize] pour filtrer l'accès à plusieurs fonctionnalités. Je ne peux utiliser l'AccountController livré avec mvc car mes utilisateurs se trouvent déjà dans une base à part.

    J'ai donc créé un formulaire et le "AuthController" qui va avec :
    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
    FormsAuthentication.Initialize();
     
                            // Create a new ticket used for authentication
                            FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
                                                                               1,                                       // Ticket version
                                                                               collection["login"],                 // Username associated with ticket
                                                                               DateTime.Now,                            // Date/time issued
                                                                               DateTime.Now.AddMinutes(30),             // Date/time to expire
                                                                               true,                                    // "true" for a persistent user cookie
                                                                               String.Empty,                            // User-data, in this case the roles
                                                                               FormsAuthentication.FormsCookiePath);    // Path cookie valid for
     
                            // Encrypt the cookie using the machine key for secure transport
                            string hash = FormsAuthentication.Encrypt(ticket);
                            HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, // Name of auth cookie
                                                               hash); // Hashed ticket
     
                            // Set the cookie's expiration time to the tickets expiration time
                            if (ticket.IsPersistent) cookie.Expires = ticket.Expiration;
     
                            // Add the cookie to the list for outgoing response
                            Response.Cookies.Add(cookie);
    Mes utilisateurs sont authentifiés et passent avec succès les filtres [Authorise] mais pas les [Authorize(Roles="...")].

    Où dois-je mettre en place le rôle de l'utilisateur :
    - dans le cookie (pas très secure) ?
    - en variable de session ?

    merci.

  2. #2
    Membre expérimenté Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Points : 1 352
    Points
    1 352
    Par défaut
    Encode et decode tu bien ta chaine de string contenant tes roles comme je le décris ici à la fin du post:

    http://www.developpez.net/forums/d893818/dotnet/developpement-web/asp-net/asp-net-mvc-configuration-lauthentification-web-config/

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    merci pour l'exemple. J'ai donc repris le code mais c'est sûr la méthode "Application_AuthenticateRequest" que je bloque : en asp.net mvc j'ai pas de Object sender, EventArgs e..

    Comment je pourrais l'adapter ?

  4. #4
    Membre expérimenté Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Points : 1 352
    Points
    1 352
    Par défaut
    mmhhh voila qui est des plus étrange, car le mvc est basé sur l'asp.net, , alors tu devrais avoir un fichier global.asax , et à l'intérieur la possibilité d'utiliser cette fonction Application_AuthenticateRequest.

    bon courage à toi en tout cas,

  5. #5
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    Citation Envoyé par devstp Voir le message
    Je ne peux utiliser l'AccountController livré avec mvc car mes utilisateurs se trouvent déjà dans une base à part.
    MVC est basé sur ASP.NET. En ASP.NET si l'on veut utiliser sa propre base pour gérer les roles on crée un custom role provider.
    C'est pareil ici, tu crées un custom role provider que tu références dans ton fichier de config et ASP.NET continue de s'occuper tout seul des droits des utilisateurs (et tu gardes ton AccountController).
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  6. #6
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Arthis Voir le message
    mmhhh voila qui est des plus étrange, car le mvc est basé sur l'asp.net, , alors tu devrais avoir un fichier global.asax , et à l'intérieur la possibilité d'utiliser cette fonction Application_AuthenticateRequest.
    Tout fonctionne correctement ! Je débute et j'avais pas compris que Application_AuthenticateRequest était un "callback" interne au global.asax. Du coup j'appelais la fonction depuis le Application_Start() et forcément ça marchait pas.

    Par contre, j'essaie de faire la comparaison avec les sessions en PHP et surtout comment asp.net fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(...)
    Me créé un ticket

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket));
    Création d'un hash (équivalent du SESSION_ID en PHP ??) et enregistrement de ce hash dans le cookie utilisateur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    protected void Application_AuthenticateRequest()
    Me récupère les rôles de l'utilisateur et l'ajoute au contexte utilisateur ? Mais alors elle est appelée à chaque chargement de page ?
    Les rôles ne sont tout même pas écrit en dur dans le cookie ? Où sont-il stockés sur le serveur ?

Discussions similaires

  1. Erreur avec MVC
    Par Kishin dans le forum Zend_Form
    Réponses: 5
    Dernier message: 13/01/2009, 14h35
  2. Gestion des ROLES avec psql
    Par flykev dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 22/03/2008, 14h36
  3. [Smarty] Utilisation de Smarty avec MVC
    Par bendede dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 15/11/2007, 15h12
  4. Problème avec MVC
    Par Yoteco dans le forum MVC
    Réponses: 23
    Dernier message: 15/03/2007, 19h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo