Je configure donc ma permission pour un site Web mvc. Et je fais une autorisation basée sur le rôle, avoir des actions dans un contrôleur exigerait des rôles différents selon le but de l'action. Je sais que le plus recommandé serait authorizeattribute (comme je veux les rôles mis en cache) mais est-il possible d'avoir la même chose avec l'attribut actionfilter?Autorisation basée sur le rôle mvc utilisant actionfilterattribute
Actuellement, j'ai un ActionFilterAttribute semblable à ceci:
public class PermissionRequired : ActionFilterAttribute{
private readonly Role reqrole;
public PermissionRequired(Role reqRole)
{
reqrole = reqRole;
}
public override void OnActionExecuting(ActionExecutingContext filterContext) {
var ctrl = (GeneralController)filterContext.Controller;
if (!ctrl.CurrentUser.InRole(reqrole)) {
//some code to redirect this to a certain page
}
base.OnActionExecuting(filterContext);
}
}
et sur le GeneralController pour obtenir l'utilisateur actuel
public class GeneralController : Controller
private User currentUser;
public User CurrentUser {
get {
if (currentUser != null)
return currentUser;
int currentUserId = Convert.ToInt32(httpContext.User.identity.Name);
if (currentUserId != 0) {
this.currentUser = Tds.Users.FirstOrDefault(u => u.Id == currentUserId)
}
return currentUser;
}
}
et sur les contrôleurs qui hériteront cet attribut
[PermissionRequired(Role.Moderator)]
public class SomeControllerThatNeedsPermission
{
[PermissionRequired(Role.SuperAdmin)]
public ActionResult SomeActionThatNeedsPermission()
{
}
}
donc, quelqu'un d'aide est apprécié .. même des commentaires ou des pensées un re bienvenue: D
Merci beaucoup!
J'ai écrit quelque chose de similaire à cela et je l'ai collé sur SourceForge; cela pourrait vous faire gagner du temps. https://sourceforge.net/projects/simplerolesecur/ –
(Pas une solution réelle, donc c'est un commentaire à la place) Il y a un blog génial avec des choses à garder à l'esprit ou être au courant de [ici] (http: // blogs.msdn.com/b/rickandy/archive/2011/05/02/securing-your-asp-net-mvc-3-application.aspx). Je l'ai trouvé très utile dans un projet récent. –
@rick liddle: c'est un article très utile. Merci! -Jeremy: Je vais le regarder :) – gdubs