wuyouzhuguli / SpringAll

循序渐进,学习Spring Boot、Spring Boot & Shiro、Spring Batch、Spring Cloud、Spring Cloud Alibaba、Spring Security & Spring Security OAuth2,博客Spring系列源码:https://mrbird.cc
MIT License
28.21k stars 8.11k forks source link

请问35.Spring-Security-Authentication这个模块中,自己实现的cc.mrbird.security.browser.UserDetailService类是如何被调用的呢? #36

Open yaoliweb opened 4 years ago

yaoliweb commented 4 years ago

如题,cc.mrbird.security.browser.UserDetailService这个类似乎没有在其他地方注册,如果自己复制一份这个类,那整个验证功能就不起作用了。烦请懂得人能够解释一下,不慎感激!

Stan982314760 commented 4 years ago

看一下这个类AbstractUserDetailsAuthenticationProvider的authenticate()方法,里面调用了DaoAuthenticationProvider的retrieveUser()方法,这个里面就是用到了UserDetailService的loadUserByUsername()方法

yaoliweb commented 4 years ago

@Stan982314760 谢谢,感谢指明了方向。 虽然我没有找到在没有注册的情况下,Spring Security是如何找到实现的子类的。但是经过查找相关资料,建议在BrowserSecurityConfig类下,增加如下代码,这样用户应该会知道是怎么配置了。 ` @Bean public UserDetailsService userDetailsService() { return new UserDetailService(); }

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth.userDetailsService(userDetailsService()).passwordEncoder(passwordEncoder());
}`