小编rbi*_*ggy的帖子

自定义 Spring UserDetailsS​​ervice 未调用

我试图为当前登录的用户添加一些自定义数据,所以我发现我可以实现自己的 UserDetailsS​​ervice 并将其插入 Spring,但它从未被调用,我总是将校长作为用户名字符串。

我有 UserDetailsS​​ervice 的实现:

@Service
public class UserDetailServiceImpl implements UserDetailsService {

  @Override
  public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

我的 UserDetails 实现:

import org.springframework.security.core.userdetails.User;

public class LoggedInUser extends User {
...
}
Run Code Online (Sandbox Code Playgroud)

并尝试以多种方式在配置(SecurityConfiguration)中设置它:

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
      @Autowired
      private CustomAuthenticationProvider customAuthProvider;
      @Autowired
      private UserDetailsService userDetailServiceImpl;
      @Override
      protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(customAuthProvider);
        auth.userDetailsService(userDetailServiceImpl).passwordEncoder(passwordService.getPasswordEncoder());
      }
...
}
Run Code Online (Sandbox Code Playgroud)

或者

@Autowired
  protected void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { …
Run Code Online (Sandbox Code Playgroud)

java spring spring-security spring-boot userdetailsservice

5
推荐指数
1
解决办法
5531
查看次数