仅当已经注册为凭证用户时,使用Google Oauth的ServiceStack授权

时间:2014-05-19 19:17:55

标签: authentication oauth servicestack google-oauth

我正在使用具有凭据和oauth2(google / linkedin)身份验证/授权的Web应用程序。用户将由管理员注册并获得凭据。 此外,一旦注册的用户也可以通过oauth2进行身份验证。

问题在于,如果成功通过Google / Linkedin进行身份验证,Oauth2提供商将在网站中对请求进行授权,尽管用户根本不存在该请求。它们会自动为存储库中的UserAuth和UserAuthDetail创建记录。

是否有办法覆盖此默认行为,而是检查用户是否存在?

提前致谢

1 个答案:

答案 0 :(得分:2)

OAuth提供商就像您描述的那样工作。如果用户是网站新用户,并且不想发明并记住另一个密码,他/她可以选择使用可用的OAuth提供商,ServieStack将为他/她创建用户帐户。

如果使用凭据提供程序登录网站的现有用户决定通过OAuth提供程序登录,则有两种可能的情况:

  1. 如果用户登录并使用OAuth提供程序,则会创建新用户帐户
  2. 如果用户 IS 已登录并使用OAuth提供程序,则现有帐户将绑定到此OAuth提供程序。
  3. 如果您需要覆盖此内容,则可以将GoogleOAuth2Provider子类化并覆盖SaveUserAuth,默认情况下使用IUserAuthRepository.CreateOrMergeAuthSession()