每一个动作我有以下几点:有没有一种方法我可以设置[授权(角色=“管理员”)在一个MVC控制器
[Authorize(Roles = "admin")]
我设置为我控制器上的每一个动作。然而,有什么办法可以为控制器在全球范围内做到这一点?
每一个动作我有以下几点:有没有一种方法我可以设置[授权(角色=“管理员”)在一个MVC控制器
[Authorize(Roles = "admin")]
我设置为我控制器上的每一个动作。然而,有什么办法可以为控制器在全球范围内做到这一点?
[Authorize(Roles = "admin")]
public class AdminController : Controller
{
}
该属性也适用于控制器。
你甚至可以创建一个基本的控制器,并设置属性就可以了(并因此获得相同的授权上的所有衍生控制器)
[Authorize(Roles = "user")]
public class BaseController : Controller
{
}
public class NewsController : BaseController
{
}
public class ForumController : BaseController
{
[HttpPost, Authorize(Roles="admin")]
public ActionResult Delete(int id)
{
}
}
更新
第一个问题:你可以把[HandleError]
在您的基础控制器中获取MVC在所有控制器中的错误处理。我刚刚写了一个描述它的blog entry。
第二个问题:是的。将最具体的[Authorize]
属性放在操作上。 (例如授权基本控制器中的“用户”和编辑操作中的“管理员”)。
如果使用该属性标记控制器,则控制器中的所有操作方法都会受到限制。
是的,您所要做的就是将该属性放在您声明的类的顶部。
[Authorize(Roles = "admin")]
public class TheController : Controller
当你这样做的时候,那么这个控制器上的每个动作都将被检查为admin角色。
我个人更喜欢有这种东西的基础控制器。 +1 – BigMike
您在基本控制器中还放置了哪些其他的东西?想知道我是否错过了让事情变得更简单的机会。 –
另一个相关的问题。假设我在控制器级别执行此操作。那么如果我想允许两个角色(例如“用户”和“管理员”)访问同一个动作,那怎么办?我可以在行动级别覆盖,我会怎么做? –