mvc5全局身份验证检查

时间:2014-04-29 22:32:42

标签: c# asp.net-mvc authentication asp.net-identity staging

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

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

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

2 个答案:

答案 0 :(得分:9)

您应该使用Authorize操作过滤器:

[Authorize]
public ActionResult Index()
{
    return RedirectToAction("Login", "Account"); 
}

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

[Authorize]
public class HomeController : Controller
{
    //many action methods
}

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

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new AuthorizeAttribute());
}

如果您这样做,则必须对登录操作使用AllowAnonymous过滤器,以便用户可以自行验证。

答案 1 :(得分:1)

使用Authorize属性AuthorizeAttribute

public class HomeController : Controller
{
    [Authorize]
    public ActionResult Index()
    {
        return View();
    }
}

如果请求未经身份验证,MVC会将用户重定向到登录路由(在web.config身份验证部分中定义)。