我正在尝试保护我的暂存网站(mvc5应用),目前正在执行以下操作:
public class HomeController : Controller
{
public ActionResult Index()
{
if (Request.IsAuthenticated){
return View();
}
return RedirectToAction("Login", "Account");
}
以上是太费力了,不能正确,我确信我不应该通过身份验证检查单独包装我的所有视图,但是我似乎无法在一个位置添加支票?
答案 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身份验证部分中定义)。