分佈式Token 工具類 GenerateToken (基於redis )

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);

	}

}
發佈了198 篇原創文章 · 獲贊 30 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章