这篇文章主要介绍了如何解决SpringSecurity自定义AuthenticationProvider无法@Autowire的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
自定义AuthenticationProvider无法@Autowire的解决
在AuthenticationProvider中使用@自动连线注入时始终报空问题
找了半天发现应该在SecurityConfig配置类中
@EnableWebSecurity
公共类security config extendwebsecurity configurator {
在设置AuthenticationProvider时
应该使用@豆的方式设置
@豆
customauthenticationprovidercoutauthenticationprovider(){ 0
returnnew customauthenticationprovider();
}
@覆盖
受保护的void configure(authenticationmanagerbuildruth)throwsException {
auth。authenticationprovider(customAuthenticationProvider());
}
之前的错误的设置方式是
@覆盖
受保护的void configure(authenticationmanagerbuildruth)throwsException {
auth。authenticationprovider(new customauthenticationprovider());
}好了,这就可以实现AuthenticationProvider时自由的使用@自动连线了
自定义AuthenticationProvider的简单例子
xml 配置
认证管理器
身份验证-provider ref=' MyAuthenticationProvider '/
/身份验证-管理器
bean : bean id=' userdailsservice ' class=' net。螳螂。保安。auth。nmuserdailsservice “/
bean s : bean id=' MyAuthenticationProvider ' class=' net。螳螂。保安。auth。' MyAuthenticationProvider '
beans 3360属性名=' UserDetailservice '
beans:beanclass=' net。螳螂。保安。auth。nmuserdailsservice ' n
bsp;
</beans:bean>
</beans:property>
</beans:bean>
net.mantis.security.auth.MyAuthenticationProvider
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; } }
net.mantis.security.auth.NMUserDetailsService
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; } }
感谢你能够认真阅读完这篇文章,希望小编分享的“如何解决SpringSecurity自定义AuthenticationProvider无法@Autowire的问题”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/153409.html