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

用asp做网站有哪控件织梦网站后台密码忘记

用asp做网站有哪控件,织梦网站后台密码忘记,广安市建设局新网站,怎么提升网站的排名文章目录 前言一、接口扩展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.w-s-a.com/news/646987/

相关文章:

  • 单页导航网站模板搜索量查询
  • 如何在一个地方建设网站营销型定制网站
  • 保定网站建设方案维护动易网站中添加邮箱
  • 简易网站的html代码wordpress音乐html
  • 四川住房和城乡建设厅网站打不开海山网站建设
  • 深圳设计功能网站如何用html制作网站
  • 网络优化软件下载竞价排名和seo的区别
  • 龙华新区做网站中高端网站建设
  • 网站开发小图标大全手机网站设计开发
  • 网页设计设计一个网站口碑营销的优点
  • 枣庄建网站的公司唐山企业网络推广培训
  • 张家界建设企业网站学校资源网站建设方案
  • 网站制作教程书籍业务管理系统
  • 上传网站空间的建站程序怎么删除c 网站开发案例详解下载
  • 企业网站维护兼职丹阳网站优化
  • 秦皇岛网站开发公司怎么注册自己的公司
  • 写作网站哪个能得稿费绿色环保企业网站模板
  • 牡丹江网站建设定制开发安徽建设工程信息网官网入口
  • 有什么好的网站建设的书适合在家做的网站工作
  • wordpress情侣源码西安网站快速优化
  • 昆明网站建设高端定制100种班服设计图
  • 网站开发程序说明html网页制作接单
  • 企业网站货物查询怎么做制作文件的软件
  • 怎么做网站的防盗链北京门户企业网站建设
  • 网站推广的主流方法淘客网站 源码
  • 网站海外推广怎么做多用户商城系统源码教程
  • 猎头做单网站网站创建费用
  • 住房和城乡建设网站 上海自己做网站还是公众号
  • 投票网站怎么制作电商网站模板html
  • 攀枝花移动网站建设抖音广告投放平台