Comment puis-je restreindre l'accès à certains points de vue et les actions en MVC 5?
J'ai trois modèles nommés de la Catégorie, sous-catégorie, et de Service. Puis, pour chacun d'eux, j'ai créé un contrôleur à l'aide de Entity Framework, ce qui crée également des points de vue pour eux. Donc, pour chacun d'eux, j'ai séparé de Créer, de Supprimer, d'Éditer, de Détails, d'Index et de vues. Le point est que j'ai également ajouté une propriété à mon ApplicationUser classe, qui vérifie si l'utilisateur est admin ou pas. À savoir, j'ai ajouté cette propriété:
public bool IsAdmin { get; set; }
Donc, le point est que, je veux vérifier si l'utilisateur est admin ou pas, et d'agir en conséquence. Si l'utilisateur est admin, je veux lui/elle pour être en mesure d'afficher ces points de vue, et tout simplement de manipuler les données (utiliser les contrôleurs), par le biais de ces points de vue. Mais, si il/elle n'est pas un admin, je veux afficher un message qu'il/elle n'a pas l'autorisation d'afficher ces pages et de modifier les données. Comment puis-je l'atteindre en MVC? Est-il possible?
OriginalL'auteur | 2014-08-16
Vous devez vous connecter pour publier un commentaire.
Eh bien, tout d'abord, vous allez au sujet de ce mal. Alors que vous pouvez obtenir ce que vous voulez l'aide d'une propriété sur votre classe, vous allez au fond à re-mettre en œuvre ce que MVC et de l'Identité déjà vous donner.
Ainsi, au lieu de vous conduire plus loin vers le bas le trou de lapin, je vais vous tirer en arrière. Tout d'abord, "admin" devrait être un rôle. Si un utilisateur est un administrateur, il suffit de leur donner un rôle de "Admin" ou "Administrateur" ou ce que vous voulez l'appeler.
Ensuite, dans vos controllers/actions, vous pouvez utiliser le
Authorize
d'attributs et de spécifier une liste acceptable rôles. Par exemple, le suivant serait de limiter l'ensemble de la commande à seulement ceux dans un rôle "Admin":Si il y a une action particulière dans ce contrôleur que n'importe qui devrait pouvoir accéder à, connecté ou non, vous pouvez protéger l'ensemble de la commande, mais l'utilisation
AllowAnonymous
sur l'action en question:Vous pouvez aussi ajouter le
Authorize
attribut directement sur votre /vos action(s):Apprécié cette belle réponse.
Aimé cette belle réponse.
OriginalL'auteur Chris Pratt