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

一般给公司做网站用什么软件高职考技能考网站建设试题

一般给公司做网站用什么软件,高职考技能考网站建设试题,网页编程语言有哪几种,凡科建站平台深入了解Redis-实战篇-短信登录 一、故事背景二、知识点主要构成2.1、短信登录2.1.1、生成随机短信验证码引入maven依赖生成验证码 2.1.2、实现登录校验拦截器2.1.3、基于Redis实现短信登录2.1.3.1、发送验证码时存入Redis2.1.3.2、登录时校验验证码 2.1.4、解决状态登录刷新的… 深入了解Redis-实战篇-短信登录 一、故事背景二、知识点主要构成2.1、短信登录2.1.1、生成随机短信验证码引入maven依赖生成验证码 2.1.2、实现登录校验拦截器2.1.3、基于Redis实现短信登录2.1.3.1、发送验证码时存入Redis2.1.3.2、登录时校验验证码 2.1.4、解决状态登录刷新的问题 三、总结提升 一、故事背景 最近在系统的回顾redis相关的知识总结成系列博客方便回顾也希望大家能给出意见帮助我更快的成长本篇博客主要介绍使用Redis如何实现短信登录功能 系列 深入了解Redis-基础篇 二、知识点主要构成 2.1、短信登录 2.1.1、生成随机短信验证码 引入maven依赖 Hutool是一个小而全的Java工具类库通过静态方法封装降低相关API的学习成本提高工作效率使Java拥有函数式语言般的优雅让Java语言也可以“甜甜的”。 Hutool的目标是使用一个工具方法代替一段复杂代码从而最大限度的避免“复制粘贴”代码的问题彻底改变我们写代码的方式。 !--hutool--dependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactIdversion5.7.17/version/dependency生成验证码 一般随机数每个公司都会自己的生成规则,包括个数,生成方式大家只需要知道使用hutool也可以简单快速生成随机数即可 部分生成方式如下 引入hutool包之后直接使用RandomUtil类的随机数字方法生成就可以了还可自定义生成位数 //生成验证码 String code RandomUtil.randomNumbers(6); RandomUtil.randomString(10) //小写字母数字 RandomUtil.randomStringUpper(10) //大写字母数字 RandomUtil.randomNumbers(10) //数字 RandomUtil.randomStringWithoutStr(10,0123456789) //不含有0123456789 RandomUtil.randomString(abc,10) //只含有abc RandomUtil.randomChar() // 生成小写字母数字中一个字符 RandomUtil.randomNumber() // 生成0123456789中一个字符 RandomUtil.randomChar(-!?) // 生成-!?中一个字符这里以6位为例使用String code RandomUtil.randomNumbers(6); 2.1.2、实现登录校验拦截器 public class LoginInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 1.判断是否需要拦截ThreadLocal中是否有用户if (UserHolder.getUser() null) {// 没有需要拦截设置状态码response.setStatus(401);// 拦截return false;}// 有用户则放行return true;} }2.1.3、基于Redis实现短信登录 2.1.3.1、发送验证码时存入Redis public Result sendCode(String phone, HttpSession session) {// 1.校验手机号if (RegexUtils.isPhoneInvalid(phone)) {// 2.如果不符合返回错误信息return Result.fail(手机号格式错误);}// 3.符合生成验证码String code RandomUtil.randomNumbers(6);// 4.保存验证码到 sessionstringRedisTemplate.opsForValue().set(LOGIN_CODE_KEY phone, code, LOGIN_CODE_TTL, TimeUnit.MINUTES);// 5.发送验证码log.debug(发送短信验证码成功验证码{}, code);// 返回okreturn Result.ok();}2.1.3.2、登录时校验验证码 这里首先对手机号进行格式校验通过后从Redis获取验证码并校验通过后去查询该用户如果存在直接将用户信息存到redis中如果不存在则先去执行注册操作进行注册之后将用户信息存入Redis中方便下次获取 public Result login(LoginFormDTO loginForm, HttpSession session) {// 1.校验手机号String phone loginForm.getPhone();if (RegexUtils.isPhoneInvalid(phone)) {// 2.如果不符合返回错误信息return Result.fail(手机号格式错误);}// 3.从redis获取验证码并校验String cacheCode stringRedisTemplate.opsForValue().get(LOGIN_CODE_KEY phone);String code loginForm.getCode();if (cacheCode null || !cacheCode.equals(code)) {// 不一致报错return Result.fail(验证码错误);}// 4.一致根据手机号查询用户 select * from tb_user where phone ?User user query().eq(phone, phone).one();// 5.判断用户是否存在if (user null) {// 6.不存在创建新用户并保存user createUserWithPhone(phone);}// 7.保存用户信息到 redis中// 7.1.随机生成token作为登录令牌String token UUID.randomUUID().toString(true);// 7.2.将User对象转为HashMap存储UserDTO userDTO BeanUtil.copyProperties(user, UserDTO.class);MapString, Object userMap BeanUtil.beanToMap(userDTO, new HashMap(),CopyOptions.create().setIgnoreNullValue(true).setFieldValueEditor((fieldName, fieldValue) - fieldValue.toString()));// 7.3.存储String tokenKey LOGIN_USER_KEY token;stringRedisTemplate.opsForHash().putAll(tokenKey, userMap);// 7.4.设置token有效期stringRedisTemplate.expire(tokenKey, LOGIN_USER_TTL, TimeUnit.MINUTES);// 8.返回tokenreturn Result.ok(token);}2.1.4、解决状态登录刷新的问题 这里主要利用Redis实现和session一样的功能用户每次访问都会刷新该用户的token在redis中的有效时间 Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//请求头中获取tokenString token request.getHeader(authorization);if (StrUtil.isBlank(token)){// 不存在response.setStatus(401);// 拦截return false;}String key RedisConstants.LOGIN_USER_KEY;//基于token从redis中获取用户MapObject,Object userMap stringRedisTemplate.opsForHash().entries(key token);if (userMap.isEmpty()){// 不存在response.setStatus(401);// 拦截return false;}UserDTO userDTO BeanUtil.fillBeanWithMap(userMap,new UserDTO(),false);//保存用户信息到ThreadLocalUserHolder.saveUser(userDTO);stringRedisTemplate.expire(key,RedisConstants.LOGIN_USER_TTL, TimeUnit.MINUTES);//放行return true;}三、总结提升 短信验证码修改为以手机号为key验证码为value保存在redis中在用户使用手机号登录时获取redis中的验证码和请求参数中的验证码比对一致则去库里查该手机号的用户是否存在不存在则新建用户并把该用户对象存在在redis中。校验登录状态是使用HandlerInterceptor拦截器实现的在此之前需要配置拦截哪些请求不拦截哪些请求从客户端的请求头中获取token信息并从redis中获取用户信息 为空返回401状态不为空则把用户信息存储在ThreadLocal中还把验证码和用户信息设置有效时间时间一过则退出用户登录。在请求处理完之后销毁用户信息。 如果本篇博客对您有一定的帮助大家记得留言点赞收藏哦。
http://www.w-s-a.com/news/460563/

相关文章:

  • 移动网站开发服务器丰都集团网站建设
  • 网站开发逻辑图烫画图案设计网站
  • 客户管理系统哪找公司网站如何做优化
  • 常德企业网站建设广州站在哪里
  • 移动端网站建站视频教程网站如何做淘客
  • 注册网站会不会有风险网站建设实训致谢语
  • ssh框架做的家政服务网站需要做网站建设的公司
  • 众筹网站制作长春高端网站建设
  • 亳州网站网站建设wordpress汉化.po
  • 怎样给建设的网站提意见网红营销概念
  • 怎么知道一个网站是谁做的广告行业网
  • 上海app定制开发公司大城网站优化
  • 工厂 网站建设北京招聘网站设计师
  • 企业网站建设与网络营销的关系网页qq音乐在线听
  • 网站如何制作学校的做做代销的网站
  • 灌云网站建设维护常州市天宁区建设局网站
  • 广州中小企业网站建设网络营销平台的类型
  • 做非遗网站的原因wordpress ip 插件
  • 微信企业网站 源码下载wordpress 4.9.5 太卡
  • 湖北网站建设公司哪家好房地产最新政策调整
  • 重庆建设岗位培训网站今天重大新闻乌克兰
  • 流水线 东莞网站建设如何在网上销售产品
  • 哪些做图片赚钱的网站网站建设销售业绩任务
  • 建立网站 知乎如何做网站的图片滑动块
  • 国外做珠宝的网站有哪些滨湖区建设局官方网站
  • 关于中国幼教网站开发的经验中国建设银行晋中分行网站
  • 挪威网站后缀如何外贸网络推广
  • 外汇交易网站开发仟亿家设计软件好吗亿家
  • 专门教做甜品的网站郑州高新区建设环保局网站
  • 建站公司怎么获客网站建设全网营销