600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 史上最简单的Spring Security教程(三十):自定义用户名密码及验证码登录与CA登录方

史上最简单的Spring Security教程(三十):自定义用户名密码及验证码登录与CA登录方

时间:2022-08-09 09:28:29

相关推荐

史上最简单的Spring Security教程(三十):自定义用户名密码及验证码登录与CA登录方

前面我们讲了CA登录方式的详细实现及配置,也讲了如何改造默认的用户名密码登录方式,添加验证码登录选项。本次,我们就将这两种方式融合在一起,实现共存,以达到用户可以自由选择验证码登录、CA登录方式。

其实,重要的逻辑在前面的文章中都以实现过,本次只需合并相应逻辑到一起即可。然后,修改 Spring Security 配置,以实现两种登录方式的共存。

@EnableWebSecurity@Configurationpublic class SpringSecurityConfiguration extends WebSecurityConfigurerAdapter {​......​@Overrideprotected void configure(HttpSecurity http) throws Exception {......​http.addFilterBefore(certificateAuthorityAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);http.addFilterAt(usernamePasswordAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);http.addFilterAfter(customFilterSecurityInterceptor(), FilterSecurityInterceptor.class);}​@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.authenticationProvider(certificateAuthorityDaoAuthenticationProvider()).userDetailsService(customJdbcUserDetailsService()).passwordEncoder(new BCryptPasswordEncoder());}​private AbstractAuthenticationProcessingFilter certificateAuthorityAuthenticationFilter() throws Exception {CertificateAuthorityAuthenticationFilter authorityAuthenticationFilter = new CertificateAuthorityAuthenticationFilter();authorityAuthenticationFilter.setAuthenticationSuccessHandler(certificateAuthorityAuthenticationSuccessHandler());authorityAuthenticationFilter.setAuthenticationFailureHandler(certificateAuthorityAuthenticationFailureHandler());authorityAuthenticationFilter.setAuthenticationManager(authenticationManager());return authorityAuthenticationFilter;}​private AuthenticationProvider certificateAuthorityDaoAuthenticationProvider() {CertificateAuthorityDaoAuthenticationProvider certificateAuthorityDaoAuthenticationProvider = new CertificateAuthorityDaoAuthenticationProvider();certificateAuthorityDaoAuthenticationProvider.setUserDetailsService(certificateAuthorityJdbcUserDetailsService());return certificateAuthorityDaoAuthenticationProvider;}......​}

其实说到底,就是配置两个Filter,即 UsernamePasswordCaptchaAuthenticationFilter、CertificateAuthorityAuthenticationFilter。

配置完成后,启动系统,先使用验证码方式登录。

输入相应的用户名、密码、验证码之后,可正常访问系统。

然后,退出登录,切换到CA登录方式,登录系统,也可以正常登录系统,改造完成。

其它详细源码,请参考文末源码链接,可自行下载后阅读。

我是银河架构师,十年饮冰,难凉热血,愿历尽千帆,归来仍是少年!

如果文章对您有帮助,请举起您的小手,轻轻【三连】,这将是笔者持续创作的动力源泉。当然,如果文章有错误,或者您有任何的意见或建议,请留言。感谢您的阅读!

源码

github

/liuminglei/SpringSecurityLearning/tree/master/30

gitee

/xbd521/SpringSecurityLearning/tree/master/30

如果喜欢我们的文章

可以关注我们

也可以点击右下角的在看告诉我们

期待与您相遇

史上最简单的Spring Security教程(三十):自定义用户名密码及验证码登录与CA登录方式共存详细实现及配置

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。