2013-07-18 2 views
2

J'essaie d'utiliser l'attribut sur l'application MVC Autorisez 4,Comment définir le rôle d'attribut d'autorisation MVC4 à l'utilisateur?

[Authorize(Roles = "Administrator, Super-User")] 
public JsonResult Remove(int id) 
{ 
     . 
     . 
     . 
} 

Je sais que seul le rôle « administrateur » et les rôles « Super-User » sont autorisés à exécuter la méthode Remove, mais comment je peut définir le rôle à l'utilisateur réel de l'application?

+0

Qu'est-ce que le système d'authentification vous utilisez? – SLaks

Répondre

0

Vous pouvez ajouter l'utilisateur actuel à un rôle à l'aide

Roles.AddUsersToRole(new string[]{HttpContext.Current.User.Identity.Name}, "Admin");

classe rôles est disponible dans l'espace System.Web.Security.

si vous souhaitez ajouter des utilisateurs et des rôles -Ouvrir votre solution dans Visual Studio goto Projet-> ASP.NET configuration-> onglet Sécurité

1

La réponse est - en quelque sorte, de sorte que HttpContext.Current.User est définie et la méthode IsInRole renvoie la valeur true. La manière la plus simple de le faire serait de suivre l'un des mécanismes intégrés d'authentification/autorisation: l'authentification par formulaires ou l'authentification Windows.

Le premier exige que la demande porte un cookie de formulaires valide émis par le serveur. Cette dernière nécessite que le principal de demande puisse être authentifié dans le contrôleur de domaine.

Vous êtes toutefois libre de mettre en œuvre un module d'authentification personnalisé.

Si vous commencez tout juste à apprendre cela, vous voudrez probablement utiliser l'authentification par formulaire pour cela. Laissez simplement vos utilisateurs se connecter, émettre le cookie et le cookie sera automatiquement transporté par une requête ajax ultérieure (en supposant que votre code serveur est appelé depuis l'appel ajax côté client javascript).

0

Vous pouvez ajouter un utilisateur à des rôles en utilisant un fournisseur de rôle.

var rolesProvider = (SimpleRoleProvider)Roles.Provider; 

Vérifiez le rôle existe

if (!rolesProvider.RoleExists("SuperUser")) 
{ 
    rolesProvider.CreateRole("SuperUser"); 
} 

Vérifiez si l'utilisateur est dans le rôle déjà, sinon, ajoutez l'utilisateur au rôle

if (! rolesProvider.IsUserInRole("JohnSmith", "SuperUser")) 
{ 
    rolesProvider.AddUsersToRoles(new[] {"JohnSmith"}, new[] {"SuperUser"}); 
} 
Questions connexes