token的设置与获取
设置 获取 Token
2023-09-14 08:57:06 时间
以用户登录为例:
application-resources.yml:
#用户session在redis中保存的key
REDIS_STU_SESSION_KEY: REDIS_USER_SESSION
#session过期时间
STU_SESSION_EXPIRE: 7200
StuService.java:
//验证用户账号密码 CustomResult checkLogin(User user, HttpSession session); //获取token CustomResult getStuByToken(String token);
StuServiceImpl.java:
@Autowired private RedisClient redisClient; @Autowired private UserMapper userMapper; @Autowired private TaskMapper taskMapper; @Value("${REDIS_STU_SESSION_KEY}") private String REDIS_STU_SESSION_KEY; @Value("${STU_SESSION_EXPIRE}") private Integer STU_SESSION_EXPIRE; /** * @return boolean * @Description //验证用户是否存在 * @Date 2019-03-31 21:59 * @Param [user] **/ @Override public CustomResult checkLogin(User user,HttpSession session) { CustomResult result = new CustomResult(); UserExample userExample = new UserExample(); UserExample.Criteria criteria = userExample.createCriteria(); criteria.andUsernameEqualTo(user.getUsername()); criteria.andPasswordEqualTo(user.getPassword()); List<User> userList1 = userMapper.selectByExample(userExample); //HttpServletRequest request = null; //HttpSession session = request.getSession(); if (userList1.isEmpty()) { result.setMsg("账号或密码错误,请重试!"); //return 0;//用户不存在 return result; } else { criteria.andRoleEqualTo(2); List<User> userList2 = userMapper.selectByExample(userExample); if (userList2.isEmpty()){ result.setMsg("您已成功注册,请等待管理员审核!"); return result; //return 1;//等待分配权限,管理员审核 }else{ System.out.println("===================="+userList2.get(0)); //登陆成功,设置session session.setAttribute("stuInfo",userList2.get(0)); User userInfo = userList2.get(0); //生成token String token = UUID.randomUUID().toString(); userInfo.setPassword(null); //用户信息写入redis(:使redis目录分层,更为简洁) redisClient.set(REDIS_STU_SESSION_KEY + ":" + token, JsonUtil.objectToJson(userInfo)); //session过期时间 redisClient.expire(REDIS_STU_SESSION_KEY + ":" + token,STU_SESSION_EXPIRE); //Object stu = redisClient.get("stu"); //System.out.println("========123"+stu); //return 2;//用户存在,通过管理员审核 return CustomResult.ok(token); } } } /** * @Description //获取token * @Date 2019-04-10 16:06 * @Param [token] * @return com.sun123.springboot.CustomResult **/ @Override public CustomResult getStuByToken(String token) { String json = (String)redisClient.get(REDIS_STU_SESSION_KEY + ":" + token); //判断是否为空 if(StringUtils.isBlank(json)){ return CustomResult.build(400,"此session已经过期,请重新登录"); } //若不为空,更新过期时间 redisClient.expire(REDIS_STU_SESSION_KEY + ":" + token,STU_SESSION_EXPIRE); //返回用户信息 return CustomResult.ok(JsonUtil.jsonToPojo(json,User.class)); }
LoginController.java:
import com.sun123.springboot.CustomResult; import com.sun123.springboot.entity.User; import com.sun123.springboot.service.StuService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpSession; /** * @ClassName LoginController * @Description TODO * @Date 2019/3/31 20:27 * @Version 1.0 */ @Controller public class LoginController { @Autowired private StuService stuService; @GetMapping("/login") public String toLogin(){ return "students/login/stu-login"; } @PostMapping("/checkLogin") @ResponseBody public CustomResult checkLogin(User user, HttpSession session){ //int flag = stuService.checkLogin(user,session); CustomResult result = stuService.checkLogin(user, session); return result; } @GetMapping("/token/{token}") @ResponseBody public CustomResult getUserByToken(@PathVariable String token){ CustomResult stuByToken = stuService.getStuByToken(token); return stuByToken; } }
代码测试:
查看响应结果:
浏览器访问:http://localhost:8002/token/d6b4f83c-76df-4f99-b6f9-56e6ff9d6acb
相关文章
- 【python实操】软件安装进展提示进度条如何实现的?如何设置窗体拉伸?如何获取输入框内容?
- 【Java AWT 图形界面编程】Canvas 中绘制超大图片 ( 使用鼠标拖动查看全图 | 设置 JFrame 窗口自动关闭 | 获取并绘制图片 | 鼠标拖动计算位移 | 画布偏移 )
- 【Android 高性能音频】AAudio 缓冲区控制 ( XRun | 欠载 UnderRun | 超限 OverRun | 获取缓冲区大小 | 设置缓冲区大小 )
- 【Android RTMP】音频数据采集编码 ( FAAC 音频编码参数设置 | FAAC 编码器创建 | 获取编码器参数 | 设置 AAC 编码规格 | 设置编码器输入输出参数 )
- 【Unity3D】Unity3D 软件安装 ( 注册账号并下载 Unity Hub | 安装 Unity Hub | 获取个人版授权 | 中文环境设置 | 安装 Unity3D 编辑器 )
- redis在Windows中下载及安装、设置教程
- JQuery设置搜索框默认值,当输入框获取焦点时,默认值消失详解编程语言
- jQuery获取和设置disabled属性、背景图片路径详解编程语言
- Oracle邮件发送:简单附件设置方法(oracle邮件附件)
- JS元素属性的获取和设置
- 深入理解 MySQL 中的外键设置(mysql外键设置)
- 配置MySQL主主LVS配置:设置可靠的高可用性(mysql主主lvs)
- 时间解决Java使用Redis设置过期时间的问题(redisjava过期)
- 时间利用Java设置Redis过期时间(redisjava过期)
- Linux设置内存: 方法与技巧(linux设置内存大小)
- 服务设置Linux主机名的正确方式(linux主机名字)
- linux 下快速设置IP和重启(linux修改ip重启)
- 使用 MSSQL 远程登录:新手指南(mssql设置远程登录)
- Redis设置及获取值技巧(redis设置获取值)
- 保留Redis实现关机后数据不丢失的方法(redis设置关机后数据)
- 用javascriptgetComputedStyle获取和设置style的原理
- mysql数据库中my.ini的优化2G内存针对站多抗压型的设置
- 本地策略提示不能确定应用到此机器的组策略安全性设置的解决方法
- jquery乱码与contentType属性设置问题解决方案
- js获取或设置当前窗口url参数的小例子
- JavaScriptcookie的设置获取删除详解
- jQuery设置和获取HTML、文本和值示例