我工作的一个Web应用程序将同时拥有凭证和的oauth2(谷歌/ LinkedIn)认证/授权。用户将由管理员和给予的凭证进行注册。 此外,一旦注册的用户也可以通过oauth2进行身份验证。与谷歌的Oauth ServiceStack授权,只有已注册为凭据用户
的问题是,供应商的oauth2与谷歌/ LinkedIn,如果认证成功将授权尽管不存在于所有的用户在网站上的请求。他们自动为存储库中的UserAuth和UserAuthDetail创建记录。
有没有办法覆盖此默认行为,而检查用户是否存在?
在此先感谢
感谢您的答复,我会去子类的OAuth的提供商,反正我相信它会对IUserAuthRepository.CreateOrMergeAuthSession()有用,它有一个参数,指示是否应该创建新用户(如果不存在)。 – gjspaho
嗨,它看起来像在[AuthProvider.cs(https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack/Auth/AuthProvider.cs),SaveUserAuth不会被调用,它已被注释掉在OnAuthenticated'如果(令牌!= NULL){ authInfo.ForEach((X,Y)=> tokens.Items [X] = Y); session.UserAuthId = authRepo.CreateOrMergeAuthSession(session,tokens); } // SaveUserAuth(authService,userSession,authRepo,tokens);' – gjspaho
你好。那么你不需要SaveUserAuth :)相反,重写OnAuthenticated并重新使用一些基类代码来实现你需要的确切行为。 – iamruss