我正在尝试重定向到ASP.NET MVC6中的其他登录URL
我的帐户控制器登录方法有一个Route
属性来更改url。
[HttpGet]
[AllowAnonymous]
[Route("login")]
public IActionResult Login(string returnUrl = null)
{
this.ViewData["ReturnUrl"] = returnUrl;
return this.View();
}
尝试访问未经授权的页面时,我被重定向到无效的url,它应该只是/login
,但我得到**http://localhost/Account/Login?ReturnUrl=%2Fhome%2Findex
**
我已经配置了Cookie身份验证路径,如下所示:
services.Configure<CookieAuthenticationOptions>(opt =>
{
opt.LoginPath = new PathString("/login");
});
我已经添加了一个默认过滤器,以确保所有的网址都需要身份验证。
services.AddMvc(
options =>
{
options.Filters.Add(new AuthorizeFilter(new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build()));
});
我已经检查了url /login
确实加载了登录页面,而/account/login
没有加载,正如预期的那样。
**编辑:**我已将路线保留原样(除了更改默认控制器和操作)
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Site}/{action=Site}/{id?}");
});
7条答案
按热度按时间0wi1tuuw1#
现在
asp.net core 2.0
退出后,此选项已更改为:更多关于migrating to 2.0 here的信息,以及更多关于从2.0迁移到2.1的信息。
更新最新的Asp.NET 7.0,感谢@Chekkan:
z4bn682m2#
如果选中
UseIdentity
扩展方法here,您会注意到它使用的是IdentityOptions
而不是CookieAuthenticationOptions
,因此您必须配置IdentityOptions
:编辑
对于asp.netcore 2.0:身份cookie选项不再是身份选项的一部分。
laik7k3q3#
asp.net core 2.0
起,如果您使用没有身份的cookie:source
7eumitmz4#
您可能还想尝试使用
StatusCodePages
:tuwxkamq5#
在添加身份验证服务时,特别是在使用cookie身份验证方案时,需要在startup.cs中进行配置。
这就是我解决问题的方法,你应该试试......它肯定对你有用
z9smfwbn6#
更新:从dot net core 2.1.x开始,Identity是从SDK中搭建的。要共同签署@mxmissile应答,可以指定路径。要使用技巧路径,请合并高级路由或重定向。
s6fujrry7#
我不会推荐Serj Sagan解决方案在真实的生活中的例子。这将是完美的工作时,开发,但对于一个真正的应用程序所使用的不同类型的用户可能会误导。让我们看看下面的场景
1.我已通过身份验证
1.我知道特定页面的URL
1.我无权访问该页面
这意味着我会被重定向到登录页面,就好像我没有通过身份验证一样,事实并非如此。我会更多地使用mxmissile解决方案
我个人使用AddMvcCore,但如果使用的是剃刀视图,则需要添加AddRazorViewEngine;如果使用的是剃刀页面,则需要添加AddRazorPages