ASP.NETCore,更改默认重定向未授权我正在尝试重定向到ASP.NETMVC6中的另一个登录URL我的帐户控制器登录方法具有路由属性更改URL。[HttpGet][AllowAnonymous][Route("login")]publicIActionResultLogin(stringreturnUrl=null){this.ViewData["ReturnUrl"]=returnUrl;返回this.View();}当试图访问未经授权的页面时,我被重定向到一个无效的URL,它应该只是/login但我得到的是http://localhost/Account/Login?ReturnUrl=%2Fhome%2Findex我已经配置了cookie身份验证路径如下:services.Configure(opt=>{opt.LoginPath=newPathString("/login");});我添加了一个默认过滤器以确保默认情况下所有URL都需要身份验证。services.AddMvc(options=>{options.Filters.Add(newAuthorizeFilter(newAuthorizationPolicyBuilder().RequireAuthenticatedUser().Build()));});我检查过url/login确实加载了登录页面,而/account/login没有按预期加载。编辑:我按原样保留了路线,(除了更改默认控制器和操作)/{ID?}”);});如果您在此处检查UseIdentity扩展方法,您会注意到它使用IdentityOptions而不是CookieAuthenticationOptions,因此您必须配置IdentityOptions:services.Configure(opt=>{opt.Cookies.ApplicationCookie.LoginPath=newPathString("/login");});编辑对于asp.netcore2.0:身份cookie选项不再是IdentityOptions的一部分。检查mxmissile的答案。现在有了asp.netcore2.0,它变成了:services.ConfigureApplicationCookie(options=>options.LoginPath="/Account/LogIn");有关迁移到2.0的更多信息。有关从2.0迁移到2.1的更多信息。您可能还想试试StatusCodePages:.Forbidden)response.Redirect("/Account/Login");});更新:从dotnetcore2.1.x开始,Identity是从SDK构建的。要共同签署@mxmissile答案,可以指定路径。要实现技巧路径,请结合高级路由或重定向。ScaffoldingIdentity我不会在真实示例中推荐SerjSagan解决方案。这在开发时工作正常,但对于不同类型用户使用的实际应用程序,它可能会产生误导。让我们看看以下场景我已通过身份验证可以使用我知道特定页面的URL,但我无权访问该页面这意味着我将被重定向到登录页面,就好像我没有通过身份验证一样,但我不是。我会更个人地使用mxmissile解决方案我正在使用AddMvcCore,但是如果你使用razorviews和AddRazorPages如果你使用razorpages则需要添加AddRazorViewEngine上面是C#学习教程:ASP.NETcore,更改默认重定向Unauthorizedshare如果它对你有用,你需要多了解C#学习教程,希望你多多关注—.Add(newAuthorizeFilter(policy));}).AddRazorViewEngine().AddAuthorization().AddJsonFormatters();本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
