我有一个ASP.NET MVC4 Web应用程序,其中包含表用户,角色和rolePrivileges
userid用户名密码roleid]值:1 user1 12345 3,2 user2 12345 1,3 user3 12345 2
[roleid,rolename]值:1个管理员,2个客户,3个客人,4个...
[Roleid,Action,GrantAccess]值:1 / Home / Index Y 1 / Home / Settings Y 1 / Home / Dashboard Y 2 / Home / Index Y 2 / Home / Settings N 2 / Home / Dashboard Y 3 / Home / Index Y 3 / Home /设置N 3 / Home / Dashboard N.
我想在ASP.NET MVC表单身份验证中实现以下功能:
应动态授予控制器操作拒绝访问角色的权限,如果用户尝试访问未授予用户访问权限的控制器操作,则应注销该应用程序 .
1)我想知道实现这一目标的最佳方法,因为对像Authorize(Roles =“admin”)这样的角色名称进行硬编码将不起作用
2)我还有用户特定的设置需要在用户登录时进行初始化,在asp.net表单中存储在会话变量中可以使用asp.net中的TempData完成相同的MVC这是最佳做法吗?
1 回答
您可以基于角色组而不是角色创建操作过滤器 . 角色组可以以1对多的关系存储在数据库中 . (即1组有很多角色) . 然后将组名称提供给操作过滤器 .
要使用您,只需创建管理页面即可管理您的角色组 . 将过滤器添加到控制器或操作非常简单 .
在上面的示例中,我还允许将用户添加到角色组,但这将是您的选择 .