Redis妙用--存储用户token

image-20200913201801802

​ 在设计类似电商的系统时,一个常见的需求是每个页面都需要携带登录用户信息。常见的解决方法有两种:使用cookie保存、使用JWT保存。但如果系统中使用了Redis缓存,那么还可以有第三种解决方案–将用户token缓存在Redis中。

一、登陆时生成一个token存入Redis

//生成一个token对象,保存在redis中
redisTemplate.opsForHash().put("token","user",user);

二、在每个页面生成时,提供token

//以JSON字符串形式返回token
@RequestMapping(value = "/getToken",method = RequestMethod.GET)
@ResponseBody
public User getToken(){
    
    
    User user = (User) redisTemplate.opsForHash().get("token", "user");
    return user;
}
//发送ajax请求,获取token
function get_token(){
    
    
    $.ajax({
    
    
        url:"getToken",
        type:"GET",
        dataType:"JSON",
        success:function(result){
    
    
            //将返回的用户信息保存在token中
            var token = result;
            //打印登录用户
            console.log(token);
            //打印登录用户的id
            console.log(token.id);
            document.getElementById('username').innerText = "用户名:"+token.username;
        }
    });
}

三、注销时,删除token

//注销
@RequestMapping("/logout")
public String logout(){
    
    
    redisTemplate.opsForHash().delete("token","user");
    return "/login";
}

猜你喜欢

转载自blog.csdn.net/weixin_44580146/article/details/108567575
今日推荐