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

建设中医知识学习网站开业时网站可以做哪些活动吗

建设中医知识学习网站,开业时网站可以做哪些活动吗,杭州it培训,重庆价格低建设网站公司文章目录 前言一、接口扩展1. LoginStorage2. LocalLoginStorage3. RedisLoginStorage4. 参数配置 二、登录相关接口改动1.登录接口2. 登录拦截器 总结 前言 前面分别介绍了本地Map和redis存储用户登录信息#xff0c;但是第二天我登录就出现问题了#xff0c;因为我Redis部… 文章目录 前言一、接口扩展1. LoginStorage2. LocalLoginStorage3. RedisLoginStorage4. 参数配置 二、登录相关接口改动1.登录接口2. 登录拦截器 总结 前言 前面分别介绍了本地Map和redis存储用户登录信息但是第二天我登录就出现问题了因为我Redis部署在虚拟机里面不可能每次都专门启动虚拟机来回替换代码也太麻烦这里我们根据配置参数来控制下将用户信息存储到哪里。 一、接口扩展 开放扩展,关闭修改。 1. LoginStorage package org.example.springboot3.bigevent.login;/*** Create by zjg on 2024/6/3*/ public interface LoginStorage {public void put(String id, String token);public String get(String id);public boolean remove(String id); }2. LocalLoginStorage package org.example.springboot3.bigevent.login;import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Component; import java.util.Map; import java.util.concurrent.ConcurrentHashMap;/*** Create by zjg on 2024/6/3*/ ConditionalOnProperty(namelogin.storage,havingValue 0) Component public class LocalLoginStorage implements LoginStorage{private MapString,String loginUsersnew ConcurrentHashMap(256);Overridepublic void put(String id, String token) {loginUsers.put(id, token);}Overridepublic String get(String id) {return loginUsers.get(id);}Overridepublic boolean remove(String id) {return loginUsers.remove(id)!null;}} 3. RedisLoginStorage package org.example.springboot3.bigevent.login;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; import java.util.concurrent.TimeUnit;/*** Create by zjg on 2024/6/3*/ ConditionalOnProperty(namelogin.storage,havingValue 1) Component public class RedisLoginStorage implements LoginStorage{AutowiredStringRedisTemplate stringRedisTemplate;Overridepublic void put(String id, String token) {stringRedisTemplate.opsForValue().set(id,token,24, TimeUnit.HOURS);}Overridepublic String get(String id) {return stringRedisTemplate.opsForValue().get(id);}Overridepublic boolean remove(String id) {return Boolean.TRUE.equals(stringRedisTemplate.delete(id));} } 4. 参数配置 这个参数控制使用本地存储、还是redis存储这样扩展起来也方便。 login:storage: 0二、登录相关接口改动 1.登录接口 Autowired LoginStorage loginStorage; RequestMapping(login) public Result login(Valid User loginUser){String message用户名/密码不正确;User user userSerivce.findUserByName(loginUser.getUsername());if(user!null){//用户存在if(user.getPassword().equals(Md5Util.getMD5String(loginUser.getPassword()))){//密码正确MapString,Object claimsnew HashMap();claims.put(userId,user.getId());claims.put(username,user.getUsername());String token JwtUtils.create(claims);loginStorage.put(user.getId().toString(),token);return Result.success(登录成功,token);}}return Result.error(message); }2. 登录拦截器 Autowired LoginStorage loginStorage; Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String token request.getHeader(Authorization);if(token!nulltoken.contains(Bearer)){String tokenStr token.substring(token.indexOf(Bearer) 7);boolean verify JwtUtils.verify(tokenStr);if(verify){//此处解析loginUsers,验证用户已登录MapString, Object claims JwtUtils.getClaims(tokenStr);if(tokenStr.equals(loginStorage.get(claims.get(userId).toString()))){ThreadLocalUtil.set(claims);//用户信息放置ThreadLocalreturn true;};}}response.setStatus(HttpStatus.UNAUTHORIZED.value());response.setContentType(application/json;charsetUTF-8);ObjectMapper objectMapper new ObjectMapper();objectMapper.writerFor(Result.class);String message objectMapper.writeValueAsString(Result.error(token验证失败,请重新获取token后重试!));response.getWriter().println(message);return false; } 总结 回到顶部 这样我们就可以通过参数login.storage的修改灵活地调整用户登录信息的存储方式了。 后面的登出接口和修改密码接口也会涉及到模式的使用。
http://www.dnsts.com.cn/news/54809.html

相关文章:

  • 网站广告设计怎么做客厅装修效果图片大全
  • 快餐网站模板网站建设及维护 东营
  • 做网站策划计划书线上推广有哪些平台效果好
  • 人才网站开发方案深圳创意网站设计
  • 网站建设彳金手指排名上海大型网站制作
  • 收录网站的二级域名免费好玩的网页游戏
  • 网站建设lnmp网站排名优化怎么弄
  • 蓝田微网站建设推广公司的网站可以采取哪些方式
  • 多人在线网站开发网站建设小组实训总结
  • Asp.net 手机网站制作河南网站建设哪家公司好
  • 新余网站开发商标注册申请官网
  • 动漫php网站模板电子商务做网站
  • 网站内部关键词人才网站建设策划书
  • 陕西省建设厅执业资格注册中心网站北京4a广告公司
  • 怎样建英文网站seo是什么部位
  • 深圳龙华做网站的公司做网站需要几个人分工
  • 怎么用node做网站贵州省城乡住房和建设厅网站
  • 甘肃城乡建设厅网站网站建设资质
  • 重庆网站建设近重庆零臻科技常用的网站制作软件
  • 网站建设 工作室淮南移动网站建设
  • 网站开发项目进度安排建设网站广州
  • 广州网站建设哪家专业北京市朝阳区
  • 安徽手机网站建设wordpress相册功能
  • 深圳网站设计山东济南兴田德润电话方维网络的品牌网站建设
  • rpg制作大师手机版网站建设优化兰州
  • 西安营销型网站建设高州网站建设公司
  • 海宁网站建设百度seo和sem的区别
  • 天津网站建设制作排名做马来西亚生意的网站
  • 手机网站在线制作淘宝客wordpress引流
  • 西安保障性住房建设投资中心网站承德市网站开发