: http://alvarosanchez.github.io/grails-spring-security-rest/latest/docs/index.html#_delegating_authentication_to_oauth_providersGrailsの中で「nullオブジェクトのメソッドloadUserByUsername()を呼び出すことはできません」の取得春のセキュリティ残り
を私はOAuthのを統合し、アクセストークンを取得することができますよ私はカスタムOAuthUserDetailsServiceを実装する問題に直面しています。公式ドキュメントはデフォルトの動作を上書きするために、1つは、Bean名oauthUserDetailsServiceとresources.groovyでそれを定義する必要があると述べて
FacebookOauthUserDetails.groovy
class FacebookOauthUserDetailsService implements OauthUserDetailsService{
@Delegate
UserDetailsService userDetailsService
UserDetailsChecker preAuthenticationChecks
@Override
OauthUser loadUserByUserProfile(CommonProfile userProfile, Collection<GrantedAuthority> defaultRoles) throws UsernameNotFoundException {
UserDetails userDetails
OauthUser oauthUser
println("adss")
try {
println("Trying to fetch user details for user profile: ${userProfile}")
userDetails = userDetailsService.loadUserByUsername(userProfile.id)
log.debug("Checking user details with ${preAuthenticationChecks.class.name}")
preAuthenticationChecks?.check(userDetails)
Collection<GrantedAuthority> allRoles = userDetails.authorities + defaultRoles
oauthUser = new OauthUser(userDetails.username, userDetails.password, allRoles, userProfile)
} catch (UsernameNotFoundException unfe) {
println("User not found. Creating a new one with default roles: ${defaultRoles}")
oauthUser = new OauthUser(userProfile.id, 'N/A', defaultRoles, userProfile)
}
return oauthUser
}
}
:私は カスタムサービスを作成しました.Thisは私のresources.groovyファイルがどのように見えるかです:
resources.groovy:
import hungr.FacebookOauthUserDetailsService
import hungr.UserPasswordEncoderListener
beans =
{
userPasswordEncoderListener(UserPasswordEncoderListener)
oauthUserDetailsService(FacebookOauthUserDetailsService)
}
ここでは、この文書でBeanを定義する方法を参照しようとしました。 https://docs.grails.org/latest/guide/spring.html しかし、私にとってはうまくいきませんでした。 私は何が間違っていますか?
'userDetailsService' が適切に注入しない場合があります/解決していない、あなたはgrails3を使用していますか? –
はい私はgrails 3を使用しています。 –
ヌルの問題とサービスが注入されない理由を見つけましたか?ここ –