黑马程序员Redis入门到实战教程,深度透析redis底层原理+redis分布式

P69 比较简单的token实现方式(注意,下面获取随机账号,由于本人使用的是QQ邮箱登录,所以,使用手机号登录的娃子记得更改生成随机数)
@Test void testUserLogin(){ for (int i = 0; i < 3; i++) { String QQID = RandomUtil.randomNumbers(10)+"@qq.com"; User user = userService.query().eq("phone", QQID).one(); if (user == null) { // 6. 不存在,创建用户并保存 user = new User(); user.setPhone(QQID); user.setNickName(USER_NICK_NAME_PREFIX + RandomUtil.randomString(10)); // 2.保存用户 userService.save(user); } String token = UUID.randomUUID().toString(); // 7.2 将User对象转为Hash存储 UserDTO userDTO = BeanUtil.copyProperties(user, UserDTO.class); Map<String, Object> userMap = BeanUtil.beanToMap(userDTO,new HashMap<>(), CopyOptions.create() .setIgnoreCase(true) .setFieldValueEditor((fieldName,fieldValue)->fieldValue.toString()) ); // 7.3 存储 stringRedisTemplate.opsForHash().putAll(LOGIN_USER_KEY + token, userMap); // 7.4 设置有效期 stringRedisTemplate.expire(LOGIN_USER_KEY + token, LOGIN_USER_TTL, TimeUnit.MINUTES); saveTokensToCSV(token); } } void saveTokensToCSV(String token) { String path = "E:\\JavaProject\\练手项目\\redis\\hm-dianping\\src\\main\\resources\\token.csv"; File file = new File(path); System.out.println(FileReader.create(file).readString()); FileAppender appender = new FileAppender(file, 2, true); appender.append(token); appender.flush(); System.out.println(FileReader.create(file).readString()); }