当前位置: 首页 > news >正文

找兼职工作在家做正规网站长沙网站优化seo

找兼职工作在家做正规网站,长沙网站优化seo,怎么做网站呀,付网站建设费分录备忘贴 转自:【若依RuoYi短信验证码登录】汇总_数据库_z_xiao_qiang-RuoYi 若依 配置Security: 按照Security的流程图可知,实现多种方式登录,只需要重写三个主要的组件,第一个用户认证处理过滤器,第二个用户认证tok…

备忘贴

转自:【若依RuoYi短信验证码登录】汇总_数据库_z_xiao_qiang-RuoYi 若依

配置Security:

按照Security的流程图可知,实现多种方式登录,只需要重写三个主要的组件,第一个用户认证处理过滤器,第二个用户认证token类,第三个,自定义短信登录身份认证。
在这里插入图片描述


/*** 参考UsernamePasswordAuthenticationToken类,继承AbstractAuthenticationToken,重写以下几个方法,自定义短信登录token验证。* 自定义短信登录token验证*/
public class UsernamePhoneAuthenticationToken extends AbstractAuthenticationToken {/*** 手机号*/private final Object principal;public UsernamePhoneAuthenticationToken(Object principals){super(null);this.principal = principals;setAuthenticated(false);}public UsernamePhoneAuthenticationToken(Object principal, Collection<? extends GrantedAuthority> authorities){super(authorities);this.principal = principal;super.setAuthenticated(true);}@Overridepublic Object getCredentials() {return null;}@Overridepublic Object getPrincipal() {return this.principal;}@Overridepublic 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);}@Overridepublic void eraseCredentials(){super.eraseCredentials();}
/*** 重写UserDetailsService类的loadUserByUsername方法,实现用户验证处理。* 用户验证处理*/
@Service("userDetailsByPhone")
public class UsernamePhoneUserDetailsServiceImpl implements UserDetailsService {private static final Logger logger = LoggerFactory.getLogger(UsernamePhoneUserDetailsServiceImpl.class);@Autowiredprivate ISysUserService userService;@Autowiredprivate SysUserMapper sysUserMapper;@Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {SysUser sysUser;if(Pattern.compile("^[1][1,2,3,4,5,6,7,8,9][0-9]{9}$").matcher(username).matches()){sysUser = sysUserMapper.selectUserByTel(username);}else if(username.matches("\\w{1,30}@[a-zA-Z0-9]{2,20}(\\.[a-zA-Z0-9]{2,20}){1,2}")){sysUser = sysUserMapper.selectUserByEmail(username);}else{throw new ServiceException("请使用手机号或者邮箱进行登录!");}if(StringUtils.isNull(sysUser)){logger.info("登录用户:{} 不存在.", username);throw new ServiceException("登录用户:" + username+ " 不存在");}return createLoginUser(sysUser);}public UserDetails createLoginUser(SysUser user){return new LoginUser(user.getUserId(), user.getDeptId(), user, permissionService.getMenuPermission(user));}
/*** 自定义一个短信登录的身份鉴权, UserDetailsService 只负责根据用户名返回用户信息,AuthenticationProvider负责将 UserDetails 组装成 Authentication 向调用者返回。* 自定义短信登录身份认证*/
public class UsernamePhoneAuthenticationProvider implements AuthenticationProvider {private UserDetailsService userDetailsService;public UsernamePhoneAuthenticationProvider(UserDetailsService userDetailsService){setUserDetailsService(userDetailsService);}/*** 重写authentication方法,实现身份验证逻辑*/@Overridepublic Authentication authenticate(Authentication authentication) throws AuthenticationException {UsernamePhoneAuthenticationToken authenticationToken = (UsernamePhoneAuthenticationToken) authentication;String phone = (String) authenticationToken.getPrincipal();//委托 UserDetailsService 查找系统用户UserDetails userDetails = userDetailsService.loadUserByUsername(phone);//鉴权成功,返回一个拥有鉴权的AbstractAuthenticationTokenUsernamePhoneAuthenticationToken authenticationTokenRes = new UsernamePhoneAuthenticationToken(userDetails, userDetails.getAuthorities());authenticationTokenRes.setDetails(authenticationToken.getDetails());return authenticationTokenRes;}/*** 重写supports方法,指定此AuthenticationProvider 仅支持短信验证码身份验证*/@Overridepublic boolean supports(Class<?> authentication){return UsernamePhoneAuthenticationToken.class.isAssignableFrom(authentication);}public UserDetailsService getUserDetailsService() {return userDetailsService;}public void setUserDetailsService(UserDetailsService userDetailsService) {this.userDetailsService = userDetailsService;}
/*** 配置SecurityConfig 的configure方法* spring security配置* * @author victor_zhang*/
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter
{/*** 自定义用户认证逻辑(账号密码)*/@Autowired@Qualifier("userDetailsByPass")private UserDetailsService userDetailsService;/*** 自定义用户认证逻辑(手机号验证码)*/@Autowired@Qualifier("userDetailsByPhone")private UserDetailsService userDetailsByPhone;/*** 认证失败处理类*/@Autowiredprivate AuthenticationEntryPointImpl unauthorizedHandler;/*** 退出处理类*/@Autowiredprivate LogoutSuccessHandlerImpl logoutSuccessHandler;/*** token认证过滤器*/@Autowiredprivate JwtAuthenticationTokenFilter authenticationTokenFilter;//此处省略n行代码....../*** 身份认证接口*/@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception{//手机或邮箱的验证码的验证auth.authenticationProvider(new UsernamePhoneAuthenticationProvider(userDetailsByPhone));//账号密码的验证       auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder());}

http://www.tj-hxxt.cn/news/90553.html

相关文章:

  • 徐州好点的做网站的公司有哪些西安百度公司地址介绍
  • b2c电子商务模式的网站有哪些百度seo 站长工具
  • 网站上传文件惠州seo排名公司
  • 海南茶叶网站建设seo职业培训班
  • 做海淘的网站做海淘的网站免费个人网站建站
  • 杭州公司注册代理中介优搜云seo
  • 重庆住房与城乡建设部网站如何做优化排名
  • 教育发展基金会网站建设关键词查询的分析网站
  • 温州网站建设制作公司厦门百度快速优化排名
  • 西昌有做网站的公司吗搜索竞价
  • 丰台做网站公司商旅平台app下载
  • 中国建设银行官网站哈南分理处男生最喜欢的浏览器推荐
  • 武汉做营销型网站的公司营销系统
  • 自己做的网站如何兼容ie11刷排名seo
  • 建一个网站式系统友情链接qq群
  • 公司建立网站怎么做分录外链火
  • 北京网站设计制作关键词优化微信小程序开发推广企业中层管理人员培训课程
  • 自己做网站需要哪些流程网站推广公司电话
  • 哪个网站可以免费建站啊免费建网站网站seo如何做好优化
  • 长沙做网站公司 上联网络优化公司网站排名
  • 旅游网站做精准营销的佛山营销型网站建设公司
  • 网站制作一条龙线上如何推广自己的产品
  • 做seo时网站发文目的站长工具端口检测
  • wordpress自定义schema谷歌外贸seo
  • 怎么区分营销型和展示型的网站江门网站建设
  • iis怎么做网站优化大师下载旧版本安装
  • 福州光电网站建设360网站推广费用
  • wordpress 模板兔成都网站优化排名推广
  • 电影网站开发教程营销型网站建设模板
  • 商城网站建设适合于哪类企业seo推广服务