我正在与一些我认为ServiceStack会"开箱即用"的东西作斗争…
我有一个ServiceStack API,允许通过凭证,基本,谷歌OpenId和LinkedIn OAuth2进行身份验证。
从空UserAuth和UserAuthDetails表开始,我发现如果我:
- 启动我的应用程序并使用凭据登录
- 退出
- 使用Google OpenId auth登录
ServiceStack创建两个单独的UserAuth记录,而不是链接Google UserAuthDetail与凭据认证的UserAuth。尽管两个凭据在两个记录中显示相同的电子邮件地址,但仍然存在这种情况。
但是…如果我从一个空白数据库开始,并使用LinkedIn OAuth2重复步骤,我发现单个UserAuth记录与链接的UserAuthDetails记录一起创建。这就是我想让Google Auth做的。
有没有人能解释一下为什么会发生这种情况,以及我必须做些什么来确保谷歌认证不会创建一个新的UserAuth,如果已经有一个匹配的电子邮件地址?
ServiceStack合并当前认证用户会话的User Auth详细信息。也就是说,不在OpenId/OAuth提供程序返回的任何匹配值上。
如果您注销,那么您将结束当前用户会话,并且再次进行身份验证将表现得好像它是一个新的浏览器会话