Car*_*ion 2 authentication asp.net-core identityserver4
我正在尝试根据 client_id 创建不同的登录页面。
用例:我的默认登录页面是经典的用户名/密码类型登录,但对于特定的 client_id,登录页面要求提供 3 个不同的信息,这些信息可以在他在邮件中收到的一张纸上找到(由第三方发送) )。一旦我有了这 3 个信息,我就可以验证并找到关联的用户。
技术:到目前为止,我已经做到了,一旦 IdentityServer4 将 /connect/authorize 重定向到它的默认登录路由 (/account/login),我就会根据 client_id 重定向到我的第二个登录。它可以工作,但一点也不优雅(感觉很hackish)。我确信有更好的方法来实现这一点,可能通过中间件直接从连接/授权重定向到我的第二个登录页面?
有什么想法/提示吗?
在第一次Login调用 IdentityServer 时,您调用:
/// <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);
}
Run Code Online (Sandbox Code Playgroud)
在被称为的情况下accountService.BuildLoginViewModelAsync,您拥有var context = await interaction.GetAuthorizationContextAsync(returnUrl);并且在这种情况下您拥有clientId。您可以扩展该类LoginViewModel以包含一些(您自己的)自定义属性,并在 AccountController 中基于此属性返回不同的视图。然后您只需在Views文件夹中创建您的特定视图即可。
通过这种方式,您可以拥有任意数量的视图。
| 归档时间: |
|
| 查看次数: |
1669 次 |
| 最近记录: |