我试图找出控制对我的应用程序不同部分的访问的正确方法。
我的应用程序有 3 个部分。
- 管理员
- 超级用户
- 普通用户
我读过http://blogs.msdn.com/b/rickandy/archive/2011/05/02/securing-your-asp-net-mvc-3-application.aspx,所以我明白即使我有每个区域都有一个区域,我不想将其用于我的授权。
我的想法是有 3 个基本控制器类,每个部分一个。像AdminBaseController
,SuperUserBaseController
和RegularUserBaseController
.
我知道我可以AuthorizeAttribute
为每个角色添加一个,但我想在我的设置中存储所需的角色,所以我不能在属性中设置这些角色。
所以我想我需要一个继承AuthorizeAttribute
和覆盖OnAuthorization
,这就是我被卡住的地方。这就是我到目前为止所拥有的。
public override void OnAuthorization(HttpActionContext actionContext)
{
if (actionContext.ControllerContext.Controller is AdminBaseController)
{
//do something
}
else if (actionContext.ControllerContext.Controller is SuperUserBaseController)
{
//do something
}
else if (actionContext.ControllerContext.Controller is RegularUserBaseController)
{
//do something
}
else
{
//someone forgot to use a base controller
//deny be default
}
}
我想我只是将Roles
andUsers
属性设置为正确的值,然后base.OnAuthorization
在最后调用。这似乎是一个合理的解决方案?另外,要拒绝所有,我是否应该将两个属性都设置为""
?
如果我走得很远,请为我指出一个更好的方向。