保护登录后面的整个网站即"授权"所有控制器内的所有操作

Mar*_*rko 3 c# security model-view-controller asp.net-mvc authorization

标题几乎说明了一切.

我有一个只会在登录后运行的网站,所以我想确保除非您已登录,否则无法访问任何内容.这包括ActionResults,JsonResults等...

目前,我的[Authorize]所有控制器都非常繁琐,而且不是很干燥 :)

那么我可以使用1行神奇的代码来保护整个网站吗? (显然需要访问登录页面)

此外,请注意我仍然需要进一步保护某些操作仅供某些用户/角色使用

dav*_*ser 9

如果您有多个控制器,那么创建一个AuthorizeController,您从该AuthorizeController继承必须受保护的控制器.只需将[Authorize]属性设置为AuthorizeController:

[Authorize]
public class AuthorizeController: Controller
{
}

public class HomeController : AuthorizeController
{
    ...
}

// don't inherit AccountController from AuthorizeController
public class AccountController : Controller
{
    public ActionResult Login()
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)