经过大量阅读和反复试验后,我的目标设计工作正常:
此刻,我使用一个已经存在的IdentityUser数据库并将IS4指向该数据库,并手动添加角色和声明以进行测试。
我的问题是注册新用户的最佳做法。
由于MVC客户端是用户的前端,因此应在此处显示指向用户注册的链接。
但是注册在哪里进行?
答案 0 :(得分:1)
我不会交替使用“用户管理”和“用户注册”。用户管理不仅仅是注册。但要回答您的问题:
我应该在MVC客户端中使用默认的IdentityUser吗? 注册)并将数据库指向IS4数据库或
您可以,并且不会有任何严重错误。这将在很大程度上取决于您的业务需求,但是我经常看到身份提供程序(在本例中为IdentityServer4)内置了“用户注册”。
答案 1 :(得分:1)
基本上IdentityServer承担两项职责:
IdentityServer的“问题”是用户不限于一个应用程序。虽然MVC网站可能是您的首选,但IdentityServer不会将用户与特定应用程序相关联。通过身份验证后,用户可以访问所有使用IdentityServer作为身份验证服务器的应用程序。
那么在MVC网站上注册用户是否有意义?可能不是,因为用户也可以访问(未来的)“ mvc2”网站。
IdentityServer的创建者承认这一点,因此他们创建了PolicyServer:
我们认为将“身份和访问管理”紧密结合在 单一解决方案是错误的方法。这两个问题应该是 清楚分开。
换句话说:身份验证是IdentityServer的一部分,(用户的)授权不是。
回到问题,用户的注册应由IdentityServer管理。因为那是唯一有权访问身份存储的应用程序。此外,用户也可以注册而无需被应用程序重定向。
关键是如何管理(用户的)授权。这实际上不是IdentityServer的一部分。我不会详细介绍,因为这超出了问题的范围。
但是要回答您的问题,我会做什么(包括电子邮件验证,但没有自动登录):
向IdentityServer添加注册功能并实现ReturnUrl(就像登录一样)。
在mvc网站上添加一个链接到IdentityServer上的注册功能。让用户在IdentityServer中注册,发送电子邮件验证链接,该链接将用户发送到登录页面(保留返回URL),从而使用户在注册并登录后可以重定向回mvc网站。
如何向注册用户添加授权是另一个问题。