如何更改控制器的默认身份验证重定向路径(/ Account / Login)? 例如我有4个控制器
ABC - > / ABC /登录
BCD - > / BCD /登录
EFG - > / EFG /登录
首页--->帐户/登录
答案 0 :(得分:7)
这是一个自定义的Authorize属性,根据Chris Pratt的想法:
public class CustomAuthorize:AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
string controller = filterContext.RouteData.Values["controller"].ToString();
filterContext.Result = new RedirectToRouteResult(new
RouteValueDictionary(new{ controller = controller, action = "Login" }));
}
}
可以在您的控制器上使用,如下所示:
[CustomAuthorize]
public class ABCController : Controller
这会将未经授权的客户端重定向到它尝试访问的控制器上的“登录”操作。请务必将[AllowAnonymous]
放在您的登录操作上。
答案 1 :(得分:1)
您可以删除Authorize
属性,然后在IsAuthenticated
操作中查看Details
。如果验证失败,则重定向到登录操作。
答案 2 :(得分:0)
根据这个答案 https://stackoverflow.com/a/20818754/2198830
使用新的OWIN表单身份验证(而不是旧的ASP.NET表单身份验证)时,这将在Startup类中设置。在默认模板中,它位于ConfigureAuth方法的App_Start/Startup.Auth.cs
中:
public void ConfigureAuth(IAppBuilder app)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
//here you can change the login url
LoginPath = new PathString("/Account/Login")
});
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
}