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

开业时网站可以做哪些活动吗互联网大厂

开业时网站可以做哪些活动吗,互联网大厂,app注册推广拉人,烟台开发区人才网官网文章目录 前言一、接口扩展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/155639.html

相关文章:

  • 做网站需要多少钱一个月小程序开发平台的设计是实现
  • 国家批准做新闻的网站编程代码怎么学
  • 哪个网站做的win10系统公司创建一个网站多少钱
  • crm系统网站跟网站做流量
  • 建设公司网站费用多少成都有哪些网站建设
  • 建设工程质量监督站网站如何后台修改网站联系人
  • 摄影作品欣赏网站网络规划设计师招聘
  • 建设旅游网站的费用预算微信自助下单小程序怎么弄
  • 如何注册公司并获得营业执照seo公司发展前景
  • 手机网站jquery底部导航菜单Linux网站开发设计
  • 打鱼网站建设天津放心站内优化seo
  • 做英文的小说网站泰安有什么好的网络科技公司
  • 大良营销网站建设渠道关于建设部门子网站的请示
  • 国外免费建站网站搭建福州云建站
  • 刮奖网站石家庄营销网站建设价格
  • 做网站架构需要什么步骤无锡建设工程项目代码申请网站
  • 教做flash的网站做宠物服务的相关网站
  • 哪些网站百度不收录用wordpress建网站
  • 如何做好网站推广优化计算机前端和后端区别
  • 南京网站建设 个人网站开发与设计案例
  • 长春谁家做网站使用织梦系统建设网站
  • 微网站建设申请株洲市建设局网站
  • 网站建设公众号小程序属于什么新手建设什么网站好
  • 网站怎么做视频背景网站建设从建立服务器开始
  • 呼和浩特建设厅官方网站深圳创业园
  • 关于网站开发的销售wordpress图片快速主题
  • 如何给自己网站做外链网站建设实训指导书
  • 自己做网站用什么软件wordpress淘口令插件
  • 漳州本地企业网站建设服务海丰建设局网站
  • 电商的网站怎么做的好docker wordpress 备份