【发布时间】:2013-01-30 18:29:47
【问题描述】:
我正在尝试找出控制对我的应用程序不同部分的访问的正确方法。
我的应用有 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 和Users 属性设置为正确的值,然后在最后调用base.OnAuthorization。这似乎是一个合理的解决方案?另外,要拒绝所有,我应该将两个属性都设置为""吗?
如果我离题了,请指点我一个更好的方向。
【问题讨论】:
-
看起来很完美。这是整个 Q 吗?
标签: c# asp.net-mvc asp.net-mvc-4 authorization