【问题标题】:Asp.net core 5, using Identity, how do I change the default redirect of the [Authorize] Attribute?Asp.net core 5,使用Identity,如何更改[Authorize]属性的默认重定向?
【发布时间】:2021-09-27 04:45:30
【问题描述】:

[Authorize] 非常适合锁定页面,但我正在构建一个用户很少的新产品,它引导人们登录是没有意义的,因为还没有人登录。它应该引导他们注册。

但我正在努力寻找一种无需大量中间件的简单方法。

【问题讨论】:

  • 我不知道是否有更好的方法,但我会创建一个自定义授权属性来重定向到您的注册页面。提交的答案是更好的答案
  • Authorize 不会重定向。顾名思义,它处理授权,而不是身份验证。 Authorize 指定应允许哪些已通过身份验证的用户访问和端点。如果 authentication 中间件 ASP.NET Core Identity 需要,将执行重定向

标签: c# asp.net-core asp.net-identity .net-5 asp.net5


【解决方案1】:

您可以在启动时更改LoginPath,但我怀疑这并不能回答您的问题,因为当存在足够多的用户时会发生什么?

要更改登录路径,您可以添加:

 services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
         .AddCookie(cookieOptions =>
         {
            cookieOptions.LoginPath = "/register";
            cookieOptions.AccessDeniedPath = "/account/denied";
            cookieOptions.ExpireTimeSpan = TimeSpan.FromMinutes(120);
         });

但是,如果您想要在达到临界质量时进行切换,那么这还不够。

编辑一种方法可能是这样的:

创建一个loginOrRegister 页面。然后在这个页面上点击数据库(或任何你用来查看你是否达到临界质量或基于 cookie 的已知用户),然后

  • 重定向到登录

  • 直接注册

【讨论】:

  • 对,如果我们强制登录路径为注册路径,这可能会导致很多问题。糟糕的是,它不仅仅是一个参数,而是重定向到未经授权的东西。
  • 大多数网站只是在登录页面上说To create an account click here :)
  • 是的,我有,但你知道现在用户的情况,他们只会点击退出,他们太懒了,不会点击一个额外的链接来注册。
  • 要考虑的另一点是如何许多用户在第一次访问您的网站时会真正点击安全页面?你可能想多了
  • @LouieBacaj 你想多了。每个网站,包括这个网站,都会将您重定向到具有Register 按钮的Login 页面,或具有Login 按钮的Register 页面。在这两种情况下,实际页面和工作流程是相同的——您会被重定向到登录页面。该页面的内容发生了什么变化
猜你喜欢
  • 1970-01-01
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多