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

南京专业做网站的公司哪家好企业网站如何优化

南京专业做网站的公司哪家好,企业网站如何优化,沈阳关键词seo,一个网站里面只放一个图片怎么做备忘贴 转自#xff1a;【若依RuoYi短信验证码登录】汇总_数据库_z_xiao_qiang-RuoYi 若依 配置Security: 按照Security的流程图可知#xff0c;实现多种方式登录#xff0c;只需要重写三个主要的组件#xff0c;第一个用户认证处理过滤器#xff0c;第二个用户认证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 {/*** 自定义用户认证逻辑(账号密码)*/AutowiredQualifier(userDetailsByPass)private UserDetailsService userDetailsService;/*** 自定义用户认证逻辑(手机号验证码)*/AutowiredQualifier(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.dnsts.com.cn/news/1074.html

相关文章:

  • nodejs 做网站js交件免费顶级域名注册网站
  • 河南省建设厅职称网站seo竞价推广
  • 公司做网站建设营销怎么做
  • 汽车销售网站天津百度推广网络科技公司
  • 网站建设需要编程吗淘宝的前100个关键词排名
  • 陕西最新人事任免seo排名课程咨询电话
  • 聚美优品网站建设外链代发软件
  • 做二手电脑的网站seo中文含义
  • 手机活动网站模板百度竞价点击价格公式
  • 做网站全过程网络营销渠道策略研究
  • 建设公司网站需要多少天哪家建设公司网站
  • 浙江龙元建设集团 网站企业做推广有用吗
  • 深圳建设网站培训机构济南网站制作公司
  • 网站怎么做右上角消息提醒南京广告宣传公司seo
  • 网站管理系统怎么做北京网站推广营销服务电话
  • 优质的南昌网站建设网站客服系统
  • 电子商务网站建设的基本流程青岛网站建设方案优化
  • 备份wordpress深圳搜索引擎优化seo
  • 网站建设制作合同模板什么是网络营销推广
  • wordpress jquery插件廊坊百度推广seo
  • 望京做网站的公司哪家好广州优化疫情防控措施
  • 哈尔滨制作企业网站线上推广软件
  • 做汽车新闻哪个网站好互联网
  • 写作网站招聘成都网站排名优化公司
  • 网站策划设计招聘沈阳seo建站
  • 销售推广做那个网站手机优化助手下载
  • 电子书网站模板个人主页网页设计模板
  • 网盘怎么做电影网站东莞网站建设哪家公司好
  • 武汉网站推广报价手机百度seo怎么优化
  • 四川党的建设网站宣传网站站点最有效的方式是