我有三个项目和两个EF上下文
具有.Net标识的
-
IdentityServer4(身份上下文)
-
.Net API(业务背景)
-
Js客户端(Angular)
我对实现注册有一些想法;
-
当用户在Js Client中单击注册按钮时,重定向到IdentityServers / Account / Register url . 用户成功注册后,将必要的数据发送到API并生成相关的行 . 然后我需要为Js客户端获取一个新令牌,我不知道如何在注册后执行此操作 .
-
当用户在Js Client中单击Register Button时,用户转到Js Client中的Register页面,向API发送凭据,API将凭据发送到IdentityServer . API从IdentityServer获取Jwt令牌,如果用户成功创建,则在数据库中生成必要的行,然后将jwt返回给Js Client .
主要问题是如何在用户注册到IdentityServer后获取Jwt令牌,以及如何在Js Client中安全地将令牌设置为localStorage或cookie . 我听到一些像发送jwt作为url参数的黑客但是出于安全原因这听起来不太好 . 你是如何实现注册的?
1 回答
选项#1看起来比另一个好 . 所有登录/注册逻辑都应在Auth服务器上处理 . 当用户点击保存时,它将在您的数据库中创建一行 . 无法理解你的意思
您的auth服务器应与您的数据库通信,并应负责保存新注册的用户或登录 .
当用户成功注册时,您可以为他们提供登录屏幕 .
当他们成功登录时 - 他们将被重定向到您的客户端应用程序
在客户端应用程序(自其js客户端)上,您可以使用oidc-client库来管理用户状态(登录/未登录)和JWT令牌 . 看看here!
简而言之,用户需要成功登录才能获得有效令牌 - 单独注册无济于事!