使用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后如何更改会话ID

如何获取 asp.net 身份以从​​数据库中获取对声明的更改?

在默认的 ASP.Net MVC 模板中,为啥用户每次更改时都会重新登录?

.NET Core(或 ASP.NET 5)中是不是有 MEF 的替代品