2017-10-18 123 views
0

我正在构建2个MVC应用程序,并将使用IdentityServer作为单一登录身份验证提供程序。通过遵循IdentityServer网站的示例代码,我可以使身份验证正常工作。但是现在我对如何在MVC应用程序中注册新用户感到困惑。注册使用IdentityServer4与多个客户端的新用户的正确方法是什么?

例如在MVC 1中,我有一个安全的控制器操作。现在访问此操作将被重定向到IdentityServer登录页面。如果用户选择了外部登录提供程序并成功登录,那么用户将被重定向到IdentityServer的“注册”页面,询问用户是否想要注册。如果用户点击“注册”,则成功重定向到安全操作。到目前为止,示例代码已经完成了所有这些。但我的问题是,MVC1 & MVC2需要更多关于用户注册的信息。我如何提示用户输入这些附加信息?将这些信息输入IdentityServer寄存器页面是不可行的,因为MVC需要不同的信息。但是,如果我有一个MVC1 & MVC2的注册页面,那我该如何强制用户完成注册?用户通过IdentityServer进行身份验证后,他将直接返回到最初请求的Url。我无法在每个控制器操作中都有代码来验证经过身份验证的用户是否已完成详细注册。

一个理想的方法是,一旦用户通过IdentityServer进行身份验证,我可以检查此用户是否已在本地MVC用户数据库中注册。如果不是,则将用户重定向到本地MVC注册页面,然后返回到最初请求的Url。如何做到这一点,或者有更合适的方法来做到这一点?

回答

0

但我的问题是,MVC1 & MVC2需要一些更多的信息,关于 用户注册。

要检索其他用户信息,您可以依赖用户声明获取其他用户信息。否则,有一个叫端点UserInfo Endpoint

但是,如果我有MVC1 & MVC2一个注册页面,那么如何才能我强迫 用户完成注册?

基于CLIENT_ID你可以改变注册视图

我不能在每一个控制器动作的代码来验证 验证用户是否已经完成了详细的登记。

您可以创建一个自定义过滤器来验证。但是,我想说尽量保持在IdS4项目

用户相关的细节,我可以检查是否该用户已经在当地MVC 用户数据库被注册。如果不是,则将用户重定向到本地MVC 注册页面,然后返回到最初请求的Url。 如何完成,或者有更合适的方法来做到这一点?

如果你认为,这些用户信息将只能用于此客户端,那么你可以采取这种方法。

但是,如果可能的话,您要求在用户注册页面上提供所有必需的详细信息,而不会伤害mvc1用户的信息。但有时候这是不可能的(例如,内部用户与外部用户)。如果是针对内部用户,那么我想最好有一个单独的管理界面,用户可以添加额外的信息。

无论如何,如果你想把所有的东西都保存在Id服务器的一个用户注册页面上,我会在客户端表格上添加一个额外的标志,这将表明显示额外的文件。希望这可以帮助你。

+1

MJK,谢谢你的回答。 –

相关问题