servicestack,openid,Authentication,Oauth 2.0,servicestack,Openid" /> servicestack,openid,Authentication,Oauth 2.0,servicestack,Openid" />

Authentication 为什么';ServiceStack是否始终链接UserAuth和UserAuthDetails?

Authentication 为什么';ServiceStack是否始终链接UserAuth和UserAuthDetails?,authentication,oauth-2.0,servicestack,openid,Authentication,Oauth 2.0,servicestack,Openid,我正在努力解决一些我认为ServiceStack会“开箱即用”的问题 我有一个ServiceStack API,允许通过凭据、basic、google OpenId和LinkedIn OAuth2进行身份验证 从空的UserAuth和UserAuthDetails表开始,我发现如果我: 启动我的应用程序并使用凭据登录 注销 使用Google OpenId身份验证登录 ServiceStack创建两个单独的UserAuth记录,而不是将Google UserAuthDetail与凭证认证的User

我正在努力解决一些我认为ServiceStack会“开箱即用”的问题

我有一个ServiceStack API,允许通过凭据、basic、google OpenId和LinkedIn OAuth2进行身份验证

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

  • 启动我的应用程序并使用凭据登录
  • 注销
  • 使用Google OpenId身份验证登录
  • ServiceStack创建两个单独的UserAuth记录,而不是将Google UserAuthDetail与凭证认证的UserAuth链接。尽管两个凭证在两个记录中显示相同的电子邮件地址,但仍然存在这种情况

    但是… 如果我从一个空白数据库开始,使用LinkedIn OAuth2重复这些步骤,我会发现一个UserAuth记录是用一个链接的UserAuthDetails记录创建的。这就是我想要谷歌认证做的


    有人能解释一下为什么会发生这种情况,以及我必须做些什么来确保Google Auth不会创建一个新的UserAuth(如果已经有一个具有匹配电子邮件地址的UserAuth),ServiceStack会为当前已验证的用户合并用户Auth详细信息。i、 e.不在OpenId/OAuth提供程序返回的任何匹配值上


    如果您注销,那么您将结束当前用户会话,再次进行身份验证的行为将与新的浏览器会话一样。

    好的,谢谢。这并不能解释功能上的差异——当我使用LinkedIn auth重复这些步骤时,它的行为并不是这样的。它的行为就像我期望的那样。。。如果我从凭据身份验证会话注销,然后使用LinkedIn身份验证登录,则不会创建第二个UserAuth记录,并且在创建UserAuthDetails记录时,会重新使用上一个凭据身份验证会话中的UserAuthId。我希望谷歌OpenId认证也能以同样的方式工作。对不起,我不是有意否决投票!也无法撤销?刚刚意识到,当答案更新时,我可以撤销否决投票-@mythz-这可能是一个错误吗-我应该做一个拉请求吗?是否还有其他地方我应该问这些问题?我是一名付费ServiceStack许可证持有人,我喜欢该软件-我可以就这个问题提供一些指导。@Drammy上列出了客户支持选项-如果这是一个可复制的问题,您能否在上创建一个问题,并列出重新设置的步骤,以便我们跟踪它。您还可以确保在比较每个cookie的行为之前清除浏览器cookie,thx。