gpt4 book ai didi

asp.net-core - 不同 claim 的多个登录页面

转载 作者:行者123 更新时间:2023-12-05 03:10:21 25 4
gpt4 key购买 nike

这是我的情况。

要在网站上执行某些操作,用户应该经过身份验证。不同的行为需要不同的主张。例如,要使订单用户仅通过电话号码进行身份验证,查看购买历史用户应通过电话号码和密码进行身份验证,更改电话号码用户应通过双因素身份验证进行身份验证。

我为每种身份验证方法创建一个登录页面,当用户通过身份验证时,我根据身份验证方法向她提供一组声明。我将 [Authorize(Policy="CanCreateOrder")] 添加到 CreateOrder 操作方法。该政策具有授权用户所需声明的逻辑。如果用户未获得授权,我想将用户重定向到适当的登录页面。

问题是我如何指定用户应该被重定向以进行身份​​验证的 url?

查看 CookieAuthenticationMiddleware 我看不出如何根据要求指定登录页面。文档建议在配置时设置 LoginPath 属性,但在我的情况下,登录 url 取决于我需要授权用户的声明。

最佳答案

您可以为每个不同的声明使用不同的身份验证方案:

app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
AuthenticationScheme = "Phone",
LoginPath = "<phone - path>"
....
}

app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
AuthenticationScheme = "Password",
LoginPath = "<password - path>"
....
}

app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
AuthenticationScheme = "TwoFactor",
LoginPath = "<twofactor - path>",
....
}

然后用法:

[Authorize(Policy="CanCreateOrder", ActiveAuthenticationSchemes = "Phone")]

你也可以使用多种方案:

[Authorize(Policy="CanCreateOrder", ActiveAuthenticationSchemes = "Phone,TwoFactor")]

参见 https://docs.asp.net/en/latest/security/authorization/limitingidentitybyscheme.html

关于asp.net-core - 不同 claim 的多个登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40383303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com