SecurityService.java 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package com.bofeng.service;
  2. import com.bofeng.JwtHelper;
  3. import com.bofeng.entity.User;
  4. import com.yvan.platform.Conv;
  5. import lombok.val;
  6. import org.apache.shiro.authc.AuthenticationException;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.beans.factory.annotation.Value;
  9. import org.springframework.data.redis.core.StringRedisTemplate;
  10. import org.springframework.stereotype.Service;
  11. @Service
  12. public class SecurityService {
  13. @Value("${secret:jztd}")
  14. private String secret = "jztd";
  15. @Value("${salt:jztd2}")
  16. private String salt = "jztd2";
  17. @Value("${token_time_minutes:30}")
  18. public int tokenTimeMinutes = 30;
  19. @Value("${token_time_minutes_mobile:30}")
  20. public int tokenTimeMinutesMobile = 30;
  21. @Autowired
  22. private StringRedisTemplate stringRedisTemplate;
  23. public void setVersion(String userId, String tokenVersion) {
  24. val key = "token:" + userId;
  25. stringRedisTemplate.opsForValue().set(key, tokenVersion);
  26. }
  27. public String getVersion(String userId) {
  28. val key = "token:" + userId;
  29. return stringRedisTemplate.opsForValue().get(key);
  30. }
  31. public String createPassword(User user, String loginPwd) {
  32. return loginPwd;
  33. }
  34. public String createJwt(User user, boolean isMobile) {
  35. return JwtHelper.sign(Conv.NS(user.getUserId()),
  36. user.getVersion(),
  37. user.getUserType(),
  38. user.getStaffName(),
  39. secret,
  40. isMobile ? tokenTimeMinutesMobile : tokenTimeMinutes);
  41. }
  42. public void verify(String jwtToken) {
  43. final String userId = JwtHelper.getUserId(jwtToken);
  44. String tokenVersion = getVersion(userId);
  45. if (!JwtHelper.verify(jwtToken, userId, tokenVersion, secret)) {
  46. throw new AuthenticationException("tokenVersion expire!");
  47. }
  48. }
  49. }