欢迎光临散文网 会员登陆 & 注册

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

2023-07-31 18:13 作者:不凉不量  | 我要投稿

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());
}


黑马程序员Redis入门到实战教程,深度透析redis底层原理+redis分布式的评论 (共 条)

分享到微博请遵守国家法律