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 :

Gestion authentification windows et roles


Sujet :

ASP.NET MVC

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 52
    Par défaut Gestion authentification windows et roles
    Bonjour à tous,

    Je développe un site intranet en MVC 3.0 et framework 4.0. Mon mode d'authentification est "Windows". Je désire utiliser la gestion des droit fournit par asp.net (membersship, users, et roles). Voila j'ai bien déclaré mes différents roles en base ainsi qu'associé mes utilisateur au roles via la table aspnet_UsersInRoles.

    J'arrive à interdire l'acces des utilisateurs si il ne sont pas authentifié, et maintenant j'aimerai interdire l'accés à certain partie de mon site en fonction du role de l'utilisateur.

    Mon web.config contient ca :

    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
    31
    32
     
    <connectionStrings>
        <add name="SqlRoleManagerConnection"
             connectionString="Data Source=******\BTSQLDOMUS;
             Initial Catalog=DOMUS;
             Integrated Security=True"
             providerName="System.Data.SqlClient" />
    ...
    </connectionStrings>
    ...
    <roleManager enabled="true" defaultProvider="SqlRoleManager">
          <providers>
            <clear />
            <add name="SqlRoleManager" connectionStringName="SqlRoleManagerConnection" applicationName="Domus"
               type="System.Web.Security.SqlRoleProvider" />
          </providers>
        </roleManager>
    ...
    <authentication mode="Windows" />
        <authorization>
          <deny users="?"/>
        </authorization>
    ...
    <location path="Evol_Admin">
        <system.web>
          <authorization>
            <allow roles=".\AdminDomus"/>
            <deny users="*" />
          </authorization>
        </system.web>
      </location>
    ...
    D'apres mes différents test j'ai l'impression qu'il n'associe pas de rôle à l'utilisateur.
    Pouvez vous m'aidez pour récupérer mes roles stocker en base SQL.

    Merci de votre aide

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 52
    Par défaut
    Bonjour tout le monde alors j'ai trouvé un début de solution.

    Context : authenitification windows.
    Roles crée via le membership d'asp.net donc stockée en base.

    Je voulais faire correspondre mon user windows avec mes roles présent en base.

    Pour cela j'ai crée une classe AuthorizeConfigqui hérite de AuthorizeAttribute

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    public class AuthorizeConfig: AuthorizeAttribute
        {
            protected override bool AuthorizeCore(HttpContextBase httpContext)
            {
                try
                {
                    if (httpContext == null)
                    {
                        throw new ArgumentNullException("httpContext");
                    }
                    IPrincipal user = httpContext.User;
     
                    if (!user.Identity.IsAuthenticated)
                    {
                        return false;
                    }
     
     
                    using (var DomusEntity = new BusinessObject.DOMUSEntities())
                    {
                        string[] roles;
                        var test = DomusEntity.aspnet_Users.FirstOrDefault(u => u.UserName.Equals(user.Identity.Name));
                        if (test == null)
                            roles = new string[1] { "Visiteur" };
                        else
                            roles = test.aspnet_Roles.Select(r => r.RoleName).ToArray();
     
     
                        if (HttpContext.Current.User != null)
                        {
                            user = new GenericPrincipal(user.Identity, roles);
                        }
     
                        return user.IsInRole(Roles);
                    }
                }
                catch (Exception exc) { }
                return false;
            }
        }
    et il suffit d'ajouter dans mon contrôleur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    [AuthorizeConfig(Roles = "AdminDomu")]
            public ActionResult Index()
            {
                return View();
            }
    Ma dernière question concerne l'affichage. J'ai une page blanche quand je n'ai pas les bon droit. Comment puis-je afficher un message du style "Vous n’êtes pas autorisé".

    Merci et j'espère que ça servira à certain.

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 52
    Par défaut
    Bon ben toujours dans la même classe j'ai ajouté une redirection vers une vue error.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
            {
                filterContext.Result = new RedirectResult("Error/Index");
                return;
            }
    Voila j'ai résolu mon problème...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Gestion des autorisations avec l'authentification Windows
    Par etiennegaloup dans le forum ASP.NET MVC
    Réponses: 0
    Dernier message: 16/01/2015, 10h23
  2. [Hibernate] Connexion SQL Server authentification windows
    Par Michel38 dans le forum Hibernate
    Réponses: 3
    Dernier message: 09/01/2006, 11h11
  3. changer l'authentification WINDOWS!!
    Par JauB dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/11/2005, 12h05
  4. AUTHENTIFICATION WINDOWS ET SQL SERVER
    Par npg dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 12/07/2005, 12h37
  5. Authentification Windows via TOMCAT
    Par Spi25 dans le forum Tomcat et TomEE
    Réponses: 5
    Dernier message: 21/07/2004, 10h03

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