package com.zy.bms.common.redis; import com.alibaba.fastjson.JSON; import com.zy.bms.common.Constant; import com.zy.bms.entity.Admin; import com.zy.bms.utils.RandomCode; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.concurrent.TimeUnit; /** * 用户登录Session * * @author chenyi * Create on 2020/4/3 */ @Component public class SessionManager { @Resource private StringRedisTemplate stringRedisTemplate; //Token过期时间 private final int timeout = 30; /** * 生成token */ public String generateToken(Admin admin) { String token = RandomCode.UUID(); stringRedisTemplate.boundValueOps(Constant.PREF.REDIS_TOKEN + token) .set(JSON.toJSONString(admin), timeout, TimeUnit.MINUTES); return token; } /** * 删除Token */ public void removeToken(String token) { if (token == null) return; stringRedisTemplate.delete(Constant.PREF.REDIS_TOKEN + token); } /** * 获取登录的用户信息 */ public Admin getUser(String token) { if (token == null) return null; return JSON.parseObject(stringRedisTemplate.boundValueOps(Constant.PREF.REDIS_TOKEN + token).get(), Admin.class); } /** * 验证token有效 */ public boolean valid(String token) { String key = Constant.PREF.REDIS_TOKEN + token; if (token == null) return false; Boolean flag = stringRedisTemplate.hasKey(key); if (flag == null || !flag) return false; stringRedisTemplate.expire(key, timeout, TimeUnit.MINUTES); return true; } }