Commit e6c7197fd43fee96ee659ce38c07e4e15d5feb7a

Authored by jiangjiazhi
1 parent 02fe2e57ca
Exists in master

增加token

Showing 5 changed files with 285 additions and 1 deletions

parent/core.sdk/pom.xml View file @ e6c7197
... ... @@ -27,7 +27,7 @@
27 27 <artifactId>httpmime</artifactId>
28 28 <version>${httpclient.version}</version>
29 29 </dependency>
30   -
  30 +
31 31 </dependencies>
32 32  
33 33 <version>1.0</version>
parent/core.sdk/src/main/java/com/lyms/util/TokenUtils.java View file @ e6c7197
  1 +package com.lyms.util;
  2 +
  3 +import com.google.common.base.Charsets;
  4 +import com.google.common.hash.Hashing;
  5 +import org.apache.commons.lang.time.FastDateFormat;
  6 +
  7 +import java.util.Date;
  8 +import com.google.common.base.Charsets;
  9 +import com.google.common.hash.Hashing;
  10 +import org.apache.commons.lang.time.FastDateFormat;
  11 +/**
  12 + * Created by riecard on 15/9/21.
  13 + */
  14 +public class TokenUtils {
  15 +
  16 + private static final String privateKey = "fdas34ljfr好sja@#8$%dfkl;js&4*daklfjsdl;jb1324";
  17 + public static String getToken(String password, String date) {
  18 + return Hashing.md5().newHasher().
  19 + putString(password, Charsets.UTF_8).
  20 + putString(privateKey, Charsets.UTF_8).
  21 + putString(date, Charsets.UTF_8).hash().toString();
  22 + }
  23 +
  24 + public static String getToken(String password, Date date) {
  25 + return Hashing.md5().newHasher().
  26 + putString(password, Charsets.UTF_8).
  27 + putString(privateKey, Charsets.UTF_8).
  28 + putString(getDate(date), Charsets.UTF_8).hash().toString();
  29 + }
  30 +
  31 + public static String getToken(String password) {
  32 + return Hashing.md5().newHasher().
  33 + putString(password, Charsets.UTF_8).
  34 + putString(privateKey, Charsets.UTF_8).putString(getDate(), Charsets.UTF_8).hash().toString();
  35 + }
  36 + public static boolean validToken(String token, String password) {
  37 + String confirm = getToken(password);
  38 + if (confirm.equals(token)) {
  39 + return true;
  40 + } else {
  41 + return false;
  42 + }
  43 + }
  44 + public static String getDate() {
  45 + Date date = new Date(System.currentTimeMillis());
  46 + return FastDateFormat.getInstance("yyyyMMddHH").format(date);
  47 + }
  48 + public static String getDate(Date now) {
  49 +
  50 + return FastDateFormat.getInstance("yyyyMMddHH").format(now);
  51 + }
  52 + public static String getNextHour(Date now) {
  53 + Date date = new Date(now.getTime()+60*60*1000);
  54 +
  55 + return FastDateFormat.getInstance("yyyyMMddHH").format(date);
  56 + }
  57 +
  58 +}
parent/hospital.mac/src/main/java/com/lyms/hospital/service/token/impl/TokenService.java View file @ e6c7197
  1 +package com.lyms.hospital.service.token;
  2 +/**
  3 + * Created by riecard on 15/9/22.
  4 + */
  5 +public interface TokenService
  6 +{
  7 +
  8 + /**
  9 + * 创建token
  10 + *
  11 + * @return
  12 + */
  13 + String createToken(Integer userId);
  14 +
  15 + /**
  16 + * 创建token
  17 + *
  18 + * @return
  19 + */
  20 + String createToken(Integer userId, Integer second);
  21 +
  22 + /**
  23 + * 重置token有效时间(默认重置为7天)
  24 + *
  25 + * @param token
  26 + * @return
  27 + */
  28 + boolean resetToken(String token);
  29 +
  30 + /**
  31 + * 检查token是否存在
  32 + *
  33 + * @param token
  34 + * @return
  35 + */
  36 + boolean validToken(String token);
  37 +
  38 + /**
  39 + * 检查token是否存在
  40 + *
  41 + * @param token
  42 + * @return
  43 + */
  44 + boolean validToken(String token, Integer second);
  45 +
  46 + /**
  47 + * 根据token取userId,失败返回null
  48 + *
  49 + * @param token
  50 + * @return
  51 + */
  52 + Integer getUserId(String token);
  53 +
  54 + void deleteAllToken(Integer userId);
  55 +
  56 + void deleteAllToken(Integer userId, String prefix);
  57 +
  58 + /**
  59 + * 销毁token
  60 + *
  61 + * @param token
  62 + */
  63 + void deleteToken(String token);
  64 +
  65 +}
parent/hospital.mac/src/main/java/com/lyms/hospital/service/token/impl/TokenServiceImpl.java View file @ e6c7197
  1 +package com.lyms.hospital.service.token.impl;
  2 +
  3 +import com.lyms.hospital.service.token.TokenService;
  4 +import com.lyms.util.SerializeUtils;
  5 +import com.lyms.util.TokenUtils;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.beans.factory.annotation.Value;
  8 +import org.springframework.data.redis.core.RedisTemplate;
  9 +import org.springframework.stereotype.Service;
  10 +
  11 +import java.io.Serializable;
  12 +import java.util.ArrayList;
  13 +import java.util.List;
  14 +import java.util.UUID;
  15 +
  16 +/**
  17 + * Created by riecard on 15/9/22.
  18 + */
  19 +@Service
  20 +public class TokenServiceImpl implements TokenService
  21 +{
  22 +
  23 + static final Integer seconds = 7 * 24 * 60 * 60;
  24 + static final Integer ams_seconds = 60 * 60;
  25 + @Value("${}")
  26 + private String tokenPrefix;
  27 +
  28 + @Autowired
  29 + private RedisTemplate<Serializable, Serializable> redisTemplate;
  30 +
  31 + private String prefix = null;
  32 +
  33 + private String getPrefix()
  34 + {
  35 + return tokenPrefix;
  36 + }
  37 +
  38 + private Integer getSeconds()
  39 + {
  40 + if ("ams".equals(prefix))
  41 + {
  42 + return ams_seconds;
  43 + } else
  44 + {
  45 + return seconds;
  46 + }
  47 + }
  48 +
  49 + @Override
  50 + public String createToken(Integer userId, Integer second)
  51 + {
  52 + String token = getPrefix() + TokenUtils.getToken(UUID.randomUUID().toString());
  53 +
  54 + redisTemplate.opsForValue().set(token, userId, second);
  55 +
  56 + List<Serializable> list = new ArrayList<Serializable>();
  57 + List<Serializable> delList = new ArrayList<Serializable>();
  58 + String tempKey = getPrefix() + "_tokenlist_" + userId;
  59 + Object obj = redisTemplate.opsForValue().get(tempKey);
  60 + if (obj != null)
  61 + {
  62 + list = (List<Serializable>) obj;
  63 + }
  64 + for (Serializable key : list)
  65 + {
  66 + if (!redisTemplate.hasKey(key))
  67 + {
  68 + delList.add(key);
  69 + }
  70 + }
  71 + list.removeAll(delList);
  72 + list.add(token);
  73 + redisTemplate.opsForValue().set(tempKey, SerializeUtils.serialize(list), second);
  74 + return token;
  75 + }
  76 +
  77 + @Override
  78 + public String createToken(Integer userId)
  79 + {
  80 + return createToken(userId, seconds);
  81 + }
  82 +
  83 + @Override
  84 + public boolean resetToken(String token)
  85 + {
  86 + Object obj = redisTemplate.opsForValue().get(token);
  87 + if (obj != null)
  88 + {
  89 + redisTemplate.opsForValue().set(token, SerializeUtils.serialize(obj), seconds);
  90 + return true;
  91 + }
  92 + return false;
  93 + }
  94 +
  95 + @Override
  96 + public boolean validToken(String token)
  97 + {
  98 + return validToken(token, seconds);
  99 + }
  100 +
  101 + @Override
  102 + public boolean validToken(String token, Integer second)
  103 + {
  104 + Object obj = redisTemplate.opsForValue().get(token);
  105 + if (obj != null)
  106 + {
  107 + redisTemplate.opsForValue().set(token, SerializeUtils.serialize(obj), second);
  108 + return true;
  109 + }
  110 + return false;
  111 + }
  112 +
  113 + @Override
  114 + public Integer getUserId(String token)
  115 + {
  116 + Object obj = redisTemplate.opsForValue().get(token);
  117 + if (obj != null)
  118 + {
  119 + redisTemplate.opsForValue().set(token, SerializeUtils.serialize(obj), getSeconds());
  120 + return (Integer) obj;
  121 + }
  122 + return null;
  123 + }
  124 +
  125 + @Override
  126 + public void deleteToken(String token)
  127 + {
  128 + redisTemplate.delete(token);
  129 + }
  130 +
  131 + @Override
  132 + public void deleteAllToken(Integer userId)
  133 + {
  134 + String tempKey = getPrefix() + "_tokenlist_" + userId;
  135 + Object obj = redisTemplate.opsForValue().get(tempKey);
  136 + if (obj != null)
  137 + {
  138 + List<Serializable> list = (List<Serializable>) obj;
  139 + redisTemplate.delete(list);
  140 + redisTemplate.delete(tempKey);
  141 + }
  142 + }
  143 +
  144 + @Override
  145 + public void deleteAllToken(Integer userId, String prefix)
  146 + {
  147 + String tempKey = prefix + "_tokenlist_" + userId;
  148 + Object obj = redisTemplate.opsForValue().get(tempKey);
  149 + if (obj != null)
  150 + {
  151 + List<Serializable> list = (List<Serializable>) obj;
  152 + redisTemplate.delete(list);
  153 + redisTemplate.delete(tempKey);
  154 + }
  155 + }
  156 +}
parent/pom.xml View file @ e6c7197
... ... @@ -273,6 +273,11 @@
273 273 <artifactId>qiniu-java-sdk</artifactId>
274 274 <version>${qiniu-java-sdk.version}</version>
275 275 </dependency>
  276 + <dependency>
  277 + <groupId>com.google.guava</groupId>
  278 + <artifactId>guava</artifactId>
  279 + <version>19.0-rc2</version>
  280 + </dependency>
276 281 </dependencies>
277 282 <build>
278 283 <finalName>${project.artifactId}</finalName>