0
因此,我为mvc网站设置了我的权限。我正在做一个基于角色的权限,根据操作的目的,在控制器中执行操作需要不同的角色。 我知道最推荐的是authorizeattribute(因为我想缓存角色),但它有可能与actionfilterattribute相同吗?使用actionfilterattribute的基于mvc角色的权限
目前我有类似这样的actionfilterattribute:
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);
}
}
,并在GeneralController来获得当前用户
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;
}
}
,并在将继承这个属性控制器
[PermissionRequired(Role.Moderator)]
public class SomeControllerThatNeedsPermission
{
[PermissionRequired(Role.SuperAdmin)]
public ActionResult SomeActionThatNeedsPermission()
{
}
}
所以,任何人的帮助被赞赏..甚至评论或想法a热烈欢迎:D
非常感谢!
我写了类似的东西,并坚持它在SourceForge;它可能会为你节省一些时间。 https://sourceforge.net/projects/simplerolesecur/ –
(不是一个实际的解决方案,所以这是一个评论,而不是)有一个伟大的博客文章,有些事情要记住或知道[这里](http:// blogs.msdn.com/b/rickandy/archive/2011/05/02/securing-your-asp-net-mvc-3-application.aspx)。我发现它在最近的一个项目中非常有帮助。 –
@rick liddle:这是一篇非常有用的文章。谢谢! -Jeremy:我会看看:) – gdubs