Restful API
Restful讲究一个无状态的特性(stateless),这就不能把一些例如登陆后的认证信息写进cookie的传统方式,目前探索的是采用token的方式来进行权限的识别。
JWT
JWT 是JSON风格轻量级的授权和身份认证规范,可实现无状态、分布式的Web应用授权;
jwt Token 是一串base64之后的代码 具体分为三部分:
Header //jwt 加密算法
Payload // JWT 主要的信息存储部分,其中包含了许多种的声明(claims) Claims 的实体一般包含用户和一些元数据
Signature // 用来验证发送者的 JWT 的同时也能确保在期间不被篡改
java 使用jwt
好多开源的jwt组件,这里我选择jjwt jjwt开源github地址
/**
* 创建jwt
*
* @param id
* @param subject
* @param ttlMillis
* @return
* @throws Exception
*/
public String createJWT(String subject) throws Exception
{
Date now = new Date(System.currentTimeMillis());
JwtBuilder builder = Jwts.builder().setHeaderParam("typ", "JWT").setIssuedAt(now).setSubject(subject)
.signWith(SignatureAlgorithm.HS512, jwtPropertie.getKey());
if (jwtPropertie.getExpire() >= 0)
{
long expMillis = now.getTime() + jwtPropertie.getExpire();
Date exp = new Date(expMillis);
builder.setExpiration(exp);
}
return builder.compact();
}
/**
* 解密jwt_token
*
* @param jwt_token
* @return
* @throws Exception
*/
public Claims parseJWT(String jwt_token) throws Exception
{
Claims claims = Jwts.parser().setSigningKey(jwtPropertie.getKey()).parseClaimsJws(jwt_token).getBody();
return claims;
}