| | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.doumee.core.constants.Constants; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.dao.vo.WebLoginUserVO; |
| | | import io.jsonwebtoken.Jwts; |
| | | import io.jsonwebtoken.SignatureAlgorithm; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.checkerframework.checker.units.qual.C; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | |
| | | /** |
| | | * 生成token令牌 |
| | | * |
| | | * @param member 令牌中携带的附加信息 |
| | | * @param webLoginUser 令牌中携带的附加信息 |
| | | * @return 令token牌 |
| | | */ |
| | | public String generateToken(Member member) { |
| | | if(member == null){ |
| | | public String generateToken(WebLoginUserVO webLoginUser) { |
| | | if(webLoginUser == null){ |
| | | return null; |
| | | } |
| | | Map<String,Object> map = new HashMap<>(); |
| | | map.put("id",member.getId()); |
| | | return generateTokenDo(member); |
| | | return generateTokenDo(webLoginUser); |
| | | } |
| | | |
| | | |
| | | public Member getUserInfoByToken(String token) { |
| | | public WebLoginUserVO getUserInfoByToken(String token) { |
| | | try { |
| | | Member member = getClaimsFromToken(token); |
| | | return member; |
| | | WebLoginUserVO userVO = getClaimsFromToken(token); |
| | | return userVO; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | |
| | | * |
| | | * @return 令牌 |
| | | */ |
| | | private String generateTokenDo(Member member) { |
| | | private String generateTokenDo(WebLoginUserVO webLoginUser) { |
| | | Map<String, Object> claims = new HashMap<>(); |
| | | claims.put("id",member.getId()); |
| | | claims.put("id",webLoginUser.getId()); |
| | | Date expirationDate = new Date(System.currentTimeMillis() + jwtProperties.getExpiration()); |
| | | String token = Jwts.builder().setClaims(claims) |
| | | .setExpiration(expirationDate) |
| | | .signWith(SignatureAlgorithm.HS512, jwtProperties.getSecret()) |
| | | .compact(); |
| | | redisTemplate.opsForValue().set(Constants.REDIS_TOKEN_KEY+token,JSONObject.toJSONString(member)); |
| | | redisTemplate.opsForValue().set(Constants.REDIS_TOKEN_KEY+token,JSONObject.toJSONString(webLoginUser)); |
| | | return token; |
| | | } |
| | | |
| | |
| | | * @param token 令牌 |
| | | * @return 数据声明 |
| | | */ |
| | | private Member getClaimsFromToken(String token) { |
| | | Member claims; |
| | | private WebLoginUserVO getClaimsFromToken(String token) { |
| | | WebLoginUserVO claims; |
| | | try { |
| | | String userInfo = (String) redisTemplate.opsForValue().get(Constants.REDIS_TOKEN_KEY+token); |
| | | claims = JSONObject.toJavaObject(JSONObject.parseObject(userInfo),Member.class); |
| | | claims = JSONObject.toJavaObject(JSONObject.parseObject(userInfo),WebLoginUserVO.class); |
| | | } catch (Exception e) { |
| | | claims = null; |
| | | } |