没有合适的资源?快使用搜索试试~ 我知道了~
SpringBoot + SpringSecurity 短信验证码登录功能实现
5星 · 超过95%的资源 41 下载量 105 浏览量
2020-08-27
08:40:18
上传
评论 1
收藏 59KB PDF 举报
温馨提示
试读
3页
主要介绍了SpringBoot + SpringSecurity 短信验证码登录功能实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
资源推荐
资源详情
资源评论
SpringBoot + SpringSecurity 短信验证码登录功能实现短信验证码登录功能实现
主要介绍了SpringBoot + SpringSecurity 短信验证码登录功能实现,小编觉得挺不错的,现在分享给大家,也给
大家做个参考。一起跟随小编过来看看吧
实现原理实现原理
在之前的文章中,我们介绍了普通的帐号密码登录的方式: SpringBoot + Spring Security 基本使用及个性化登录配置。 但是
现在还有一种常见的方式,就是直接通过手机短信验证码登录,这里就需要自己来做一些额外的工作了。
对SpringSecurity认证流程详解有一定了解的都知道,在帐号密码认证的过程中,涉及到了以下几个类:
UsernamePasswordAuthenticationFilter(用于请求参数获取),UsernamePasswordAuthenticationToken(表示用户登录信
息),ProviderManager(进行认证校验),
因为是通过的短信验证码登录,所以我们需要对请求的参数,认证过程,用户登录Token信息进行一定的重写。
当然验证码的过程我们应该放在最前面,如果图形验证码的实现一样。这样的做法的好处是:将验证码认证该过程解耦出来,
让其他接口也可以使用到。
基本实现基本实现
验证码校验验证码校验
短信验证码的功能实现,其实和图形验证码的原理是一样的。只不过一个是返回给前端一个图片,一个是给用户发送短消息,
这里只需要去调用一下短信服务商的接口就好了。更多的原理可以参考 SpringBoot + SpringSecurity 实现图形验证码功能
AuthenticationToken
在使用帐号密码登录的时候,UsernamePasswordAuthenticationToken里面包含了用户的帐号,密码,以及其他的是否可用
等状态信息。我们是通过手机短信来做登录,所以就没有密码了,这里我们就直接将
UsernamePasswordAuthenticationToken的代码copy过来,把密码相关的信息去掉就可以了
public class SmsCodeAuthenticationToken extends AbstractAuthenticationToken {
private static final long serialVersionUID = SpringSecurityCoreVersion.SERIAL_VERSION_UID;
private final Object principal;
public SmsCodeAuthenticationToken(String mobile) {
super(null);
this.principal = mobile;
setAuthenticated(false);
}
public SmsCodeAuthenticationToken(Object principal,
Collection<? extends GrantedAuthority> authorities) {
super(authorities);
this.principal = principal;
super.setAuthenticated(true); // must use super, as we override
}
public Object getCredentials() {
return null;
}
public Object getPrincipal() {
return this.principal;
}
public void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException {
if (isAuthenticated) {
throw new IllegalArgumentException(
"Cannot set this token to trusted - use constructor which takes a GrantedAuthority list instead");
}
super.setAuthenticated(false);
}
@Override
public void eraseCredentials() {
super.eraseCredentials();
}
}
AuthenticationFilter
资源评论
- 恽磊2023-07-26不仅介绍了功能实现,还对安全性进行了详细讲解,让读者能够更好地理解并应用在实际项目中。
- 阿玫小酱当当囧2023-07-26文件内容详细且清晰,循序渐进地解释了每一步操作,对于初学者来说很友好。
- MurcielagoS2023-07-26文件提供了完整的代码示例,帮助读者快速上手实践,省去了大量的时间和精力。
- 挽挽深铃2023-07-26这个文件介绍了如何利用SpringBoot和SpringSecurity来实现短信验证码登录功能,非常实用。
- 又可乐2023-07-26使用了简单明了的语言,让人容易理解掌握其中的知识点。
weixin_38744557
- 粉丝: 3
- 资源: 976
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功