私は私の認証実装が行われたと思っていましたが、UserDetailsオブジェクトを取得しようとすると、私はすべてユーザ名を取得しています。Spring SecurityがUserDetailsオブジェクトを返さない、ユーザ名のみ
私はoauthを使用しています。
AuthenticationManagerの設定:これが行わ付き
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
}
を、私は私のuserDetailsServiceにデバッグすることができます。これは、罰金完了し、私のクライアントは、JWTを取り戻す
@Service
public class UserServiceImpl implements UserService, UserDetailsService {
@Override
public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
MyUser persistedUser = userRepository.findByEmail(email);
if (persistedUser == null) {
throw new UsernameNotFoundException(String.format("The email %s doesn't exist", email));
}
List<GrantedAuthority> authorities = new ArrayList<>();
MyUser inMemoryUser = new MyUser(persistedUser.getEmail(), null, persistedUser.getEnabled(), false,
false, false, authorities);
return inMemoryUser;
}
}
。しかし、後のコントローラメソッドをデバッグするときに、次の問題が発見されました。この場合
@GetMapping
public @ResponseBody Iterable<Curriculum> getMyCurriculums(@AuthenticationPrincipal MyUser injectedUser) {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
MyUser principle = (MyUser) auth.getPrincipal();
return curriculumService.findByUser(principle);
}
、injectedUser =ヌル、認証はOAuth2Authenticationで、原理はStringです - ユーザ名。これはMyUserでなければなりません
あなたの問題は......ですか? –