下面列出了io.jsonwebtoken.JwtBuilder#setClaims ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public String getToken(final String username, final String password) {
if (username == null || password == null) {
return null;
}
final User user = (User) userDetailsService.loadUserByUsername(username);
Map<String, Object> tokenData = new HashMap<>();
if (password.equals(user.getPassword())) {
tokenData.put("clientType", "user");
tokenData.put("userID", user.getId());
tokenData.put("username", user.getUsername());
tokenData.put("token_create_date", LocalDateTime.now());
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MINUTE, tokenExpirationTime);
tokenData.put("token_expiration_date", calendar.getTime());
JwtBuilder jwtBuilder = Jwts.builder();
jwtBuilder.setExpiration(calendar.getTime());
jwtBuilder.setClaims(tokenData);
return jwtBuilder.signWith(SignatureAlgorithm.HS512, tokenKey).compact();
} else {
throw new ServiceException("Authentication error", this.getClass().getName());
}
}
public AuthenticationInfo login(String username, String password){
AuthenticationInfo authenticationInfo = loginService.login(username,password);
//boolean success = true;
if(authenticationInfo == null){
// 返回一个Ghost用户
//authenticationInfo = new AuthenticationInfo().ghost();
//success = false;
return null;
}
JwtBuilder jwtBuilder = Jwts.builder();
jwtBuilder.setClaims(new DefaultClaims());
jwtBuilder.claim(SSOAuthentication.CACHE_GROUP_PLACEHOLDER, cacheGroup);
jwtBuilder.claim(SSOAuthentication.CACHE_TIMEOUT_PLACEHOLDER, timeout);
SSOToken token = SSOToken.create(jwtBuilder)
.setId(authenticationInfo.getSessionId())
.setIssuer(Aooms.NAME)
.setOrigin(TokenOrigin.HTML5)
.setTime(System.currentTimeMillis());
authenticationInfo.setToken(token.getToken());
// 缓存
cache(authenticationInfo);
return authenticationInfo;
}
/**
* Creates a new JWT for the specified principal. Token is signed using
* the SecretKey with an HMAC 256 algorithm.
*
* @param claims a Map of all claims
* @return a String representation of the generated token
* @since 1.0.0
*/
public String createToken(final Map<String, Object> claims) {
final JwtBuilder jwtBuilder = Jwts.builder();
jwtBuilder.setClaims(claims);
return jwtBuilder.signWith(SignatureAlgorithm.HS256, key).compact();
}