标识服务器4客户端ID特定登录页面 [英] IdentityServer4 client_id specific login pages

查看:16
本文介绍了标识服务器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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆