为什么ServiceStack不会始终链接UserAuth和UserAuthDetails?

时间:2014-03-18 23:04:02

标签: authentication oauth-2.0 servicestack openid

我正在努力解决一些我认为ServiceStack会做的事情#34;开箱即用" ......

我有一个ServiceStack API,允许通过凭据,基本,谷歌OpenId和LinkedIn OAuth2进行身份验证。

从空的UserAuth和UserAuthDetails表开始,我发现如果我:

  1. 启动我的应用并使用凭据登录
  2. 退出
  3. 使用Google OpenId身份验证登录
  4. ServiceStack创建两个单独的UserAuth记录,而不是将Google UserAuthDetail与Credential经过身份验证的UserAuth链接。尽管两个凭据在两个记录中都显示相同的电子邮件地址,但这仍然存在。

    BUT ... 如果我从空白数据库开始并使用LinkedIn OAuth2重复这些步骤,我会发现使用链接的UserAuthDetails记录创建了一个UserAuth记录。这就是我想要Google Auth做的事情。

    任何人都可以了解为什么会发生这种情况以及我必须采取哪些措施来确保Google Auth不会创建新的UserAuth(如果已经有一个匹配的电子邮件地址?)

1 个答案:

答案 0 :(得分:1)

ServiceStack合并当前经过身份验证的user session的用户身份验证详细信息。即不是OpenId / OAuth提供商返回的任何匹配值。

如果您注销,则结束当前用户会话并再次进行身份验证,就好像它是一个新的浏览器会话一样。