在平常实际应用除了最常用的用户名 密码的验证方式外,还有手机号码 验证码、QQ号授权登陆、微信授权登陆等等很多方式,甚至在极端的情况还需要证书参与才能登陆,但是万变不离其宗,用spring security实现的原理其实都是一样,要实现这种除用户名 密码的传统密码方式外,我们需要对spring secuirty进行扩展,实现的方式由二种,下面慢慢道来,我来为大家科普一下关于spring security认证和授权?以下内容希望对你有帮助!

spring security认证和授权(springsecurity系列四)

spring security认证和授权

在平常实际应用除了最常用的用户名 密码的验证方式外,还有手机号码 验证码、QQ号授权登陆、微信授权登陆等等很多方式,甚至在极端的情况还需要证书参与才能登陆,但是万变不离其宗,用spring security实现的原理其实都是一样,要实现这种除用户名 密码的传统密码方式外,我们需要对spring secuirty进行扩展,实现的方式由二种,下面慢慢道来

第一种:自定义一个filter

自定义一个filter,放在SpringSecurity过滤器之前,在用户登录的时候会先经过这个filter,然后在这个filter中实现对验证码进行验证的功能,这种方法不推荐,因为它已经脱离了SpringSecurity

第二种:自定义一个filter让它继承自UsernamePasswordAuthenticationFilter

自定义一个filter让它继承自UsernamePasswordAuthenticationFilter,然后重写attemptAuthentication方法在这个方法中实现验证码的功能,如果验证码错误就抛出一个继承自AuthenticationException的验证吗错误的异常比如(CaptchaException),然后这个异常就会被SpringSecurity捕获到并将异常信息返回到前台,这种实现起来比较简单

,