JSON Web Token(JWT)是目前最流行的跨域身份驗證解決方案,下面是一個基於分佈式的 Token 生成器,需先配置redis
使用api
@Autowired
private GenerateToken generateToken;
generateToken.createToken(String keyPrefix, String redisValue); // 生成令牌
generateToken.createToken(String keyPrefix, String redisValue, Long time); //生成令牌
generateToken.getToken(String token); // 根據token獲取redis中的value值
generateToken.removeToken(String token); // 移除token
分佈式Token 工具類 GenerateToken (基於redis )
@Component
public class GenerateToken {
@Autowired
private RedisUtil redisUtil;
/**
* 生成令牌
*
* @param prefix
* 令牌key前綴
* @param redisValue
* redis存放的值
* @return 返回token
*/
public String createToken(String keyPrefix, String redisValue) {
return createToken(keyPrefix, redisValue, null);
}
/**
* 生成令牌
*
* @param prefix
* 令牌key前綴
* @param redisValue
* redis存放的值
* @param time
* 有效期
* @return 返回token
*/
public String createToken(String keyPrefix, String redisValue, Long time) {
if (StringUtils.isEmpty(redisValue)) {
new Exception("redisValue Not nul");
}
String token = keyPrefix + UUID.randomUUID().toString().replace("-", "");
redisUtil.setString(token, redisValue, time);
return token;
}
/**
* 根據token獲取redis中的value值
*
* @param token
* @return
*/
public String getToken(String token) {
if (StringUtils.isEmpty(token)) {
return null;
}
String value = redisUtil.getString(token);
return value;
}
/**
* 移除token
*
* @param token
* @return
*/
public Boolean removeToken(String token) {
if (StringUtils.isEmpty(token)) {
return null;
}
return redisUtil.delKey(token);
}
}