use*_*358 2 asp.net-mvc authorization forms-authentication asp.net-mvc-3
我有一堆控制器和相关的视图需要对它们应用基于角色的身份验证.我正在考虑在其上安装一个带有[authorize]属性定义的基本控制器,以便我可以让所有从该基类继承的控制器在登录后才可用.我测试过这个工作.我不确定这是否是最好的做法,或者这种方法是否会有任何陷阱.
将来,我需要只有特定角色的用户才能访问某些页面.角色列表将来自数据库表.因此,我只是在它继承的基本控制器中进行更改,而不是更改所有相关的控制器.这是正确的做法吗?
谢谢你的时间.
您可以组合任意数量的Authorize属性.
即你可以Authorize在你的基本控制器上有一个属性,在另一个控制器上有一个更具体的属性(例如指定一个角色),在控制器动作上有一个最具体的 属性(指定角色或用户)
[Authorize]
public class BaseController : Controller
{}
[Authorize(Roles="Administrator")]
public class AdminController : BaseController
{
[Authorize(Roles="SuperUser")]
public ActionResult SuperSecret()
{}
}
Run Code Online (Sandbox Code Playgroud)
它将检查所有属性,并且只有在任何属性失败时才撤消访问权限.
将来,我需要只有特定角色的用户才能访问某些页面.
这就是基于角色的身份验证的工作原理.
角色列表将来自数据库表.
将角色加载到global.asax IPrincipal中方法的自定义中OnPostAuthenticate.
因此,我只是在它继承的基本控制器中进行更改,而不是更改所有相关的控制器.
我没有按照这个要求跟着你.您是否希望避免在控制器上指定角色?
| 归档时间: |
|
| 查看次数: |
5300 次 |
| 最近记录: |