Comment vérifier si le rôle de l’utilisateur dispose d’un access en lecture / écriture à une vue spécifique

J’ai une application ASP.NET MVC 4 . J’essaie d’implémenter une solution permettant de vérifier si un utilisateur peut accéder à une vue, sinon, afficher une erreur. Si l’utilisateur peut accéder à une vue, je dois vérifier s’il dispose d’un read access read and edit access ou d’un read access read and edit access à cette vue. Si l’utilisateur dispose d’un access en lecture, seule une vue de détails normale est affichée. Si l’access en lecture et en modification est activé, l’utilisateur peut afficher une vue de détails ou modifier les données.

Est-ce que quelque chose comme ça est possible? J’ai essayé de regarder à travers quelques kits de démarrage que j’ai trouvé sur Codeplex mais je ne peux pas trouver quelque chose comme je le veux. Comment cela serait-il mis en œuvre? Si possible, si quelqu’un connaît un exemple de projet que je peux télécharger, j’apprécierai. J’aime travailler avec le code, j’apprends plus de cette façon.

Je veux que tout cela soit basé sur une firebase database.

Vous devriez vous pencher davantage sur AuthorizeAtsortingbute et sur l’utilisation des rôles. En gros, vous donnez à vos utilisateurs des rôles (pouvant être extraits de la firebase database) et pour chaque vue pour laquelle vous souhaitez limiter l’access dans votre application, vous ajoutez l’atsortingbut Autoriser avec les rôles. Par défaut, je pense que vous pouvez uniquement limiter l’access, voire aucun, mais vous pouvez probablement remplacer et écrire votre atsortingbut personnalisé pour vous donner le comportement qui vous intéresse.

Alternativement, vous pouvez gérer les privilèges utilisateur dans vos contrôleurs. Puisque vous connaissez les rôles des utilisateurs authentifiés et y avez access, vous pouvez effectuer la vérification dans le contrôleur et créer la vue à partir de celle-ci (entrées désactivées, etc.).

en relation

  • ASP.Net MVC: AuthorizeAtsortingbute peut-il être remplacé?
  • Autorisations granulaires avec certaines exigences pour un site MVC

Comme @Marcus a dit, vous devriez utiliser Atsortingbute. Lorsque l’action commence, vous pouvez vérifier le rôle de l’utilisateur, il y a access ou non:

 public class AtsortingbuteForTestAtsortingbute : ActionFilterAtsortingbute { public int RoleCanAccess { get; set; } protected override void OnActionExecuting(ActionExecutingContext filterContext) { base.OnActionExecuting(filterContext); //your validation here.. //for example: if(_currentUser.Role < RoleHasAccess ) { //user has not access to this action, redirect him to home page. filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary { { "controller", "Home" }, { "action", "Index" }, { "returnUri", filterContext.HttpContext.Request.RawUrl } }); } else { // user has access to this action } } } 

Et dans le contrôleur, utilisez votre atsortingbut:

  [AtsortingbuteForTest(RoleHasAccess = 2)] public ActionResult SaveProduct(Product product) { }