gpt4 book ai didi

authentication - IdentityServer4 client_id 特定的登录页面

转载 作者:行者123 更新时间:2023-12-02 20:31:58 26 4
gpt4 key购买 nike

我正在尝试根据 client_id 使用不同的登录页面。

用例:我的默认登录页面是经典的用户名/密码类型登录,但对于特定的 client_id,登录页面要求提供 3 种不同的信息,其中一种是他在邮件中收到的一张纸(由第三方发送)。一旦我有了这 3 个信息,我就可以验证并找到关联的用户。

技术:到目前为止,我已经做到了,一旦 IdentityServer4 将/connect/authorize 重定向到它的默认登录路由 (/account/login),我就会根据 client_id 重定向到我的第二个登录。它有效,但一点也不优雅(感觉很老套)。我确信有更好的方法来实现这一点,可能是通过一个中间件,它会直接从连接/授权重定向到我的第二个登录页面?

任何想法/提示?

最佳答案

在对 IdentityServer 的最初始 Login 调用中,您调用:

/// <summary>
/// Show login page
/// </summary>
[HttpGet]
public async Task<IActionResult> Login(string returnUrl)
{
// build a model so we know what to show on the login page
var vm = await accountService.BuildLoginViewModelAsync(returnUrl);

// some more code here

return View(vm);
}

在调用的 accountService.BuildLoginViewModelAsync 中,您有 var context = await interaction.GetAuthorizationContextAsync(returnUrl); 并且在此上下文中您有 clientId。您可以扩展 LoginViewModel 类以包含一些自定义属性(您自己的),并基于此属性在 AccountController 中返回不同的 View 。然后,您只需在 Views 文件夹中创建您的特定 View 即可。

通过这种方式,您可以拥有任意数量的 View 。

关于authentication - IdentityServer4 client_id 特定的登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48426270/

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