SessionManager.java 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package com.zy.bms.common.redis;
  2. import com.alibaba.fastjson.JSON;
  3. import com.zy.bms.common.Constant;
  4. import com.zy.bms.entity.Admin;
  5. import com.zy.bms.utils.RandomCode;
  6. import org.springframework.data.redis.core.StringRedisTemplate;
  7. import org.springframework.stereotype.Component;
  8. import javax.annotation.Resource;
  9. import java.util.concurrent.TimeUnit;
  10. /**
  11. * 用户登录Session
  12. *
  13. * @author chenyi
  14. * Create on 2020/4/3
  15. */
  16. @Component
  17. public class SessionManager {
  18. @Resource
  19. private StringRedisTemplate stringRedisTemplate;
  20. //Token过期时间
  21. private final int timeout = 30;
  22. /**
  23. * 生成token
  24. */
  25. public String generateToken(Admin admin) {
  26. String token = RandomCode.UUID();
  27. stringRedisTemplate.boundValueOps(Constant.PREF.REDIS_TOKEN + token)
  28. .set(JSON.toJSONString(admin), timeout, TimeUnit.MINUTES);
  29. return token;
  30. }
  31. /**
  32. * 删除Token
  33. */
  34. public void removeToken(String token) {
  35. if (token == null) return;
  36. stringRedisTemplate.delete(Constant.PREF.REDIS_TOKEN + token);
  37. }
  38. /**
  39. * 获取登录的用户信息
  40. */
  41. public Admin getUser(String token) {
  42. if (token == null) return null;
  43. return JSON.parseObject(stringRedisTemplate.boundValueOps(Constant.PREF.REDIS_TOKEN + token).get(), Admin.class);
  44. }
  45. /**
  46. * 验证token有效
  47. */
  48. public boolean valid(String token) {
  49. String key = Constant.PREF.REDIS_TOKEN + token;
  50. if (token == null) return false;
  51. Boolean flag = stringRedisTemplate.hasKey(key);
  52. if (flag == null || !flag) return false;
  53. stringRedisTemplate.expire(key, timeout, TimeUnit.MINUTES);
  54. return true;
  55. }
  56. }