素材巴巴 > 程序开发 >

若依框架集成手机验证码登录

程序开发 2023-09-04 16:12:31

用户名登录正常使用,额外添加手机验证码登录

新建两个类,结构如下:

SmsCodeAuthenticationProvider代码如下 :

package com.shukun.framework.security.authentication;import org.springframework.security.authentication.AuthenticationProvider;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.AuthenticationException;
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.core.userdetails.UserDetailsService;/*** 自定义短信登录身份认证*/
 public class SmsCodeAuthenticationProvider implements AuthenticationProvider {private UserDetailsService userDetailsService;public SmsCodeAuthenticationProvider(UserDetailsService userDetailsService){setUserDetailsService(userDetailsService);}/*** 重写 authenticate方法,实现身份验证逻辑。*/@Overridepublic Authentication authenticate(Authentication authentication) throws AuthenticationException {SmsCodeAuthenticationToken authenticationToken = (SmsCodeAuthenticationToken) authentication;String telephone = (String) authenticationToken.getPrincipal();// 委托 UserDetailsService 查找系统用户UserDetails userDetails = userDetailsService.loadUserByUsername(telephone);// 鉴权成功,返回一个拥有鉴权的 AbstractAuthenticationTokenSmsCodeAuthenticationToken authenticationResult = new SmsCodeAuthenticationToken(userDetails, userDetails.getAuthorities());authenticationResult.setDetails(authenticationToken.getDetails());return authenticationResult;}/*** 重写supports方法,指定此 AuthenticationProvider 仅支持短信验证码身份验证。*/@Overridepublic boolean supports(Class authentication) {return SmsCodeAuthenticationToken.class.isAssignableFrom(authentication);}public UserDetailsService getUserDetailsService() {return userDetailsService;}public void setUserDetailsService(UserDetailsService userDetailsService) {this.userDetailsService = userDetailsService;}
 }

标签:

上一篇: 我与IDEA的不舍情缘 下一篇:
素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。