mvc5全局身份验证检查

Gil*_*pie 3 c# authentication asp.net-mvc staging asp.net-identity

我正在尝试保护我的暂存站点(mvc5应用程序),目前正在执行以下操作:

    public class HomeController : Controller
    {
    public ActionResult Index()
    {
        if (Request.IsAuthenticated){
            return View();
        }
        return RedirectToAction("Login", "Account"); 
    }
Run Code Online (Sandbox Code Playgroud)

以上是太费力了,不能正确,我确信我不应该通过身份验证检查单独包装我的所有视图,但是我似乎无法在一个位置添加支票?

Ufu*_*arı 11

您应该使用授权操作过滤器:

[Authorize]
public ActionResult Index()
{
    return RedirectToAction("Login", "Account"); 
}
Run Code Online (Sandbox Code Playgroud)

您还可以在控制器级别使用它以确保所有操作方法都需要身份验证:

[Authorize]
public class HomeController : Controller
{
    //many action methods
}
Run Code Online (Sandbox Code Playgroud)

如果要对应用程序中的每个操作方法使用身份验证,可以将其添加为FilterConfig.cs中的全局筛选器:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new AuthorizeAttribute());
}
Run Code Online (Sandbox Code Playgroud)

如果执行此操作,则必须对登录操作使用AllowAnonymous过滤器,以便用户可以自行进行身份验证.