MVC用attribute验证用户权限

qq_32395957 2016-03-29 06:09:27
我是这样写的

[CheckAuthority]
public ActionResult Edit(int id = 0)
{
return View();
}




然后在filter这样写

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//此处添加判断用户是否拥有权限的方法
base.OnActionExecuting(filterContext);
}


应用场景是这样的,用户必须满足条件才能验证通过,即数据库中存在一条记录,这条记录有三个字段,分别是用户角色的Id(RoleId),当前栏目的名称(NavName),当前栏目具体的操作(ActionType),可以把NavName对应到controllerName,ActionType对应到Action,但是一个controller里面难免会有一些特殊的Action
打个比方吧,当前的controller是新闻 NewsController,那么下面就有List和Edit两个普通的Action,但也有可能会有DeleteComment(删除评论)的特殊action,而这样的action名字是不确定的,其他controller可能有不同的这种特殊操作,我试过在引用的时候通过构造函数传递参数,如下

[CheckAuthority("News","DeleteComment")]
public ActionResult Edit(int id = 0)
{
return View();
}

public class CheckAuthority : ActionFilterAttribute
{
private string navName;
private string actionType;
public CheckAuthority()
{

}

public CheckAuthority(string _actionType)
{
actionType = _actionType.ToLower();
}

public CheckAuthority(string _navName, string _actionType)
{
navName = _navName.ToLower();
actionType = _actionType.ToLower();
}
}

但是这种方法只有第一次有效,第一次进入这个action的时候,构造函数会执行,第二次就不会执行了,我想知道在MVC下这种多角色权限的场景是怎么做权限验证的?
...全文
144 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
kw13202 2016-03-30
  • 打赏
  • 举报
回复
1.数据库设计好角色和权限表 2.applocation_start时,读取角色、权限到缓存 3.在filter中根据用户角色(这时一般都是登陆后了,这时session里应该有用户对应的信息),根据controller、action、角色ID查询缓存进行判断
qq_32395957 2016-03-30
  • 打赏
  • 举报
回复
大家早上后,有大神给我讲讲么

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧