使用asp.net 5时如何更改登录网址
Posted
技术标签:
【中文标题】使用asp.net 5时如何更改登录网址【英文标题】:How to change login url when using asp.net 5 【发布时间】:2015-11-01 11:52:10 【问题描述】:我使用 asp.net 5 和 Identity 3 对用户进行身份验证,但它总是重定向到默认登录 URL,即“帐户/登录”。我想更改它,但似乎没有任何地方可以设置此选项。我在 Configure() 方法中使用 AddIdentity()。请帮忙。 谢谢
【问题讨论】:
我对受保护的操作使用“授权”属性。 你检查过owin启动类吗?登录url一般在UseCookieAuthentication中间件中定义。 是的,我正在尝试这个:app.UseCookieAuthentication(options => options.LoginPath = new PathString("Admin/Login"));但得到一个错误:System.ArgumentException 参数名称:值 【参考方案1】:使用 .Net Core 1.0.0 + Identity + Facebook OAuth,接受的答案不再编译。这是有效的:
public void ConfigureServices(IServiceCollection services)
(...)
services.Configure<IdentityOptions>(options =>
options.Cookies.ApplicationCookie.LoginPath = new PathString("/Login");
options.Cookies.ApplicationCookie.LogoutPath = new PathString("/Logoff");
);
【讨论】:
【参考方案2】:app.UseCookieAuthentication(options =>
options.LoginPath = new PathString("/Admin/Login");
options.LogoutPath = new PathString("/Admin/LogOff");
,
IdentityOptions.ApplicationCookieAuthenticationScheme
);
【讨论】:
谢谢。大多数时候,开发人员会使用自定义的登录 URL。如果这是自定义登录 url 和设置 cookie 身份验证的代码,那么 UseIdenitty() 有什么意义? 这些扩展方法只是为了提供帮助和方便,您不必使用它们。我怀疑大多数人只会使用项目模板中提供的 Account 和 Manage 控制器,他们很自然地将路径连接到 Account 控制器,因为这是他们提供的。扩展方法确实隐藏了一些人们可能想要改变的东西。你可以自己连接所有你需要的东西,或者你可以调用 .UseIdentity 然后连接你自己的东西来覆盖它,或者你可以省略 .UseIdentity 并自己做这一切。 @Xiaowei.Jia 有一个很好的观点。您可能会建议(mvc 是开源的,并通过 GitHub 接受此类建议)UseIdentity 支持用于常见自定义的选项参数。所以你最终可以得到类似 UseIdentity(opt=> opt.LoginPath = ...) 和其他常见选项。 我没有看到要添加的地方:IdentityOptions.ApplicationCookieAuthenticationScheme
@Joe Audette 发布的网址现在如下:github.com/aspnet/Identity/blob/dev/src/…【参考方案3】:
使用 ASP.NET Core 1.1 + Identity 我使用这个:
public void ConfigureServices(IServiceCollection services)
(...)
services.AddIdentity<ApplicationUser, IdentityRole>(x =>
x.Cookies.ApplicationCookie.LoginPath = new PathString("/Admin/Login");
x.Cookies.ApplicationCookie.LogoutPath = new PathString("/Admin/LogOff");
【讨论】:
对于 Core 1.1,这就是答案。我正在使用自定义身份提供程序,但效果仍然很好。【参考方案4】:使用 ASP.NET Core 2.0 + Identity,这已更改为:
services.ConfigureApplicationCookie(options => options.LoginPath = "/Account/LogIn");
更多关于migrating to 2.0 here。
【讨论】:
我在 AspNetCore 2 中使用 Identity,这对我有用。谢谢!以上是关于使用asp.net 5时如何更改登录网址的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET 和 SQL Server 2008 中的错误“用户 'NT AUTHORITY\IUSR' 登录失败”
Asp.Net Core 5.0 Deploy by Plesk Panel 问题
如何获取 asp.net 身份以从数据库中获取对声明的更改?