Python 官方文档:入门教程 => 点击学习
自定义AuthenticationProvider无法@Autowire的解决 在AuthenticationProvider中使用@Autowired注入时始终报Null问题 找了
在AuthenticationProvider中使用@Autowired注入时始终报Null问题
@EnableWEBSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter{
应该使用@Bean的方式设置
@Bean
CustomAuthenticationProvider customAuthenticationProvider() {
return new CustomAuthenticationProvider();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(customAuthenticationProvider());
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(new CustomAuthenticationProvider());
}
好了,这就可以实现AuthenticationProvider时自由的使用@Autowired了
<authentication-manager>
<authentication-provider ref="myAuthenticationProvider" />
</authentication-manager>
<beans:bean id="userDetailsService" class="net.mantis.security.auth.NMUserDetailsService"/>
<beans:bean id="myAuthenticationProvider" class="net.mantis.security.auth.MyAuthenticationProvider">
<beans:property name="userDetailsService">
<beans:bean class="net.mantis.security.auth.NMUserDetailsService">
</beans:bean>
</beans:property>
</beans:bean>
public class MyAuthenticationProvider implements AuthenticationProvider {
UserDetailsService userDetailsService;
public Authentication authenticate(Authentication authentication)
throws AuthenticationException {
//username
System.out.println("user name: "+authentication.getName());
//passWord
System.out.println("password: "+authentication.getCredentials());
System.out.println("getPrincipal: "+authentication.getPrincipal());
System.out.println("getAuthorities: "+authentication.getAuthorities());
System.out.println("getDetails: "+authentication.getDetails());
UserDetails userDetails = (UserDetails)this.userDetailsService.loadUserByUsername(authentication.getName());
UsernamePasswordAuthenticationToken result = new UsernamePasswordAuthenticationToken(
userDetails, authentication.getCredentials(),userDetails.getAuthorities());
return result;
}
public boolean supports(Class authentication) {
return true;
}
public void setUserDetailsService(UserDetailsService userDetailsService){
this.userDetailsService = userDetailsService;
}
}
public class NMUserDetailsService implements UserDetailsService {
@Override
public UserDetails loadUserByUsername(String userName)
throws UsernameNotFoundException {
ArrayList list = new ArrayList();
list.add(new SimpleGrantedAuthority("ROLE_SUPERVISOR"));
User details = new User("rod", "koala", list);
return details;
}
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
--结束END--
本文标题: SpringSecurity自定义AuthenticationProvider无法@Autowire的解决
本文链接: https://lsjlt.com/news/160337.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0