Asp.net mvc ASP.NET MVC标识:多个登录路径并修改控制器中的默认登录路径
如何更改控制器的默认身份验证重定向路径(/Account/Login)? e、 我有4个控制器 ABC-->/ABC/Login BCD-->/BCD/Login EFG-->/EFG/LoginAsp.net mvc ASP.NET MVC标识:多个登录路径并修改控制器中的默认登录路径,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,如何更改控制器的默认身份验证重定向路径(/Account/Login)? e、 我有4个控制器 ABC-->/ABC/Login BCD-->/BCD/Login EFG-->/EFG/Login 主页--->帐户/登录您可以删除授权属性,并在详细信息操作中检查是否已验证。如果身份验证失败,请重定向到登录操作。根据Chris Pratt的想法,这里有一个自定义授权属性: public class CustomAuthorize:AuthorizeAttribute { protected
主页--->帐户/登录您可以删除
授权
属性,并在详细信息
操作中检查是否已验证。如果身份验证失败,请重定向到登录操作。根据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]
。根据此答案
当使用新的OWIN表单身份验证(与旧的ASP.NET表单身份验证相反)时,这将在启动类中设置。在默认模板中,它位于ConfigureAuth方法的App\u 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);
}
你能澄清你需要什么吗?我不太明白这个问题@Rowan Freeman,例如,如果我有4个控制器(ABC、BCD、EFG等),并且所有控制器都有自己的“登录”操作。如果用户在没有任何身份验证的情况下浏览页面/ABC/Details,我们如何将用户重定向到/ABC/Login,而不是默认的(/Account/Login)。您需要编写自己的自定义Authorize
属性。提供的URL将只使用Web.config中设置的单一登录URL。您不能在默认身份验证重定向路径的操作方法中实现重定向吗?这并不能回答问题。问题是如何重定向到每个控制器的不同登录URL。复制/粘贴的代码对所有控制器使用单个URL。