黑马程序员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());
}

