标识服务器4客户端ID特定登录页面 [英] IdentityServer4 client_id specific login pages
本文介绍了标识服务器4客户端ID特定登录页面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试根据客户端ID拥有不同的登录页。
使用案例: 我的默认登录页面是典型的用户名/密码类型的登录,但对于特定的客户ID,登录页面要求提供3种不同的信息,其中一种是他在邮件中收到的一张纸(由第三方发送)。 一旦我有了这3个信息,我就可以验证并找到关联的用户。
技术细节:到目前为止,我已经完成了这样的工作:一旦IdentityServer4将/连接/授权重定向到它的默认登录路径(/count/login),我就会根据客户端id重定向到我的第二次登录。它很管用,但一点也不优雅(感觉有点老土)。 我相信有更好的方法来实现这一点,可能是通过中间件直接从连接/授权重定向到我的第二个登录页面?
有什么想法/小贴士吗?
推荐答案
在最初的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
类以包括一些(您自己的)定制属性,并基于此属性在Account控制器中返回不同的视图。然后,您只需在Views
文件夹中创建您的特定视图。
通过这种方式,您可以拥有所需的任意多个视图。
这篇关于标识服务器4客户端ID特定登录页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文