有没有办法可以为MVC控制器中的每个动作设置[Authorize(Roles ="admin")]

Sam*_*tar 4 asp.net-mvc asp.net-mvc-3

我有以下内容:

[Authorize(Roles = "admin")]
Run Code Online (Sandbox Code Playgroud)

我正在为我的控制器上的每个动作设置它.但是有一些方法我可以全局为控制器做这个吗?

jga*_*fin 5

[Authorize(Roles = "admin")]
public class AdminController : Controller
{
}
Run Code Online (Sandbox Code Playgroud)

该属性也适用于控制器.

您甚至可以创建一个基本控制器并在其上设置属性(因此在所有派生控制器上获得相同的授权)

[Authorize(Roles = "user")]
public class BaseController : Controller
{
}

public class NewsController : BaseController 
{
}

public class ForumController : BaseController 
{
    [HttpPost, Authorize(Roles="admin")]
    public ActionResult Delete(int id)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

更新

第一个问题:您可以放入[HandleError]基本控制器以在所有控制器中获取MVC的错误处理.我刚刚写了一篇描述它的博客文章.

第二个问题:是的.将最具体的[Authorize]属性放在操作上.(例如,在基本控制器中授权"users",在Edit操作上授予"admins").