JwtToken.java
package com.mycim.webapp.secutiry.jwt.token;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTCreator;
import com.auth0.jwt.interfaces.Verification;
import com.fa.sesa.threadlocal.LocalContextNames;
import com.mycim.webapp.secutiry.jwt.JwtUtils;
import org.apache.shiro.authc.AuthenticationToken;
/**
* 实现自定义Token
*
* @author songp
*/
public class JwtToken implements AuthenticationToken {
private static final String PROCESS_RRN_KEY = "PROCESSRRN";
private static final String DATA_PERMISSION_KEY = "dataPermissionFlag";
private static final String NEED_UPDATE_PWD = "NEED_UPDATE_PWD";
private static final String SPECIAL_ROLE = "SPECIAL_ROLE";
private String token;
private Long facilityRrn;
private Long userRrn;
private String userId;
private String lanague;
private String processRrns;
private String dataPermissionFlag;
private boolean specialRole;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
private boolean needUpdatePwd;
public JwtToken(Long facilityRrn, Long userRrn, String userId, String lanague, String processRrns,
String dataPermissionFlag) {
this.facilityRrn = facilityRrn;
this.userRrn = userRrn;
this.lanague = lanague;
this.userId = userId;
this.processRrns = processRrns;
this.dataPermissionFlag = dataPermissionFlag;
}
public JwtToken(String token) {
setToken(token);
}
public JwtToken() {
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
this.facilityRrn = (Long) JwtUtils.getValueByKey(this.token, LocalContextNames.FACILITY_RRN_KEY);
this.userRrn = (Long) JwtUtils.getValueByKey(this.token, LocalContextNames.USER_RRN_KEY);
this.lanague = (String) JwtUtils.getValueByKey(this.token, LocalContextNames.LANGUAGE_KEY);
this.userId = (String) JwtUtils.getValueByKey(this.token, LocalContextNames.USER_ID_KEY);
this.processRrns = (String) JwtUtils.getValueByKey(this.token, PROCESS_RRN_KEY);
this.dataPermissionFlag = (String) JwtUtils.getValueByKey(this.token, DATA_PERMISSION_KEY);
this.needUpdatePwd = (Boolean) JwtUtils.getValueByKey(this.token, NEED_UPDATE_PWD);
this.specialRole = (Boolean) JwtUtils.getValueByKey(this.token, SPECIAL_ROLE);
}
public Long getFacilityRrn() {
return facilityRrn;
}
public void setFacilityRrn(Long facilityRrn) {
this.facilityRrn = facilityRrn;
}
public Long getUserRrn() {
return userRrn;
}
public void setUserRrn(Long userRrn) {
this.userRrn = userRrn;
}
public String getLanague() {
return lanague;
}
public void setLanague(String lanague) {
this.lanague = lanague;
}
public String getProcessRrns() {
return processRrns;
}
public void setProcessRrns(String processRrns) {
this.processRrns = processRrns;
}
public String getDataPermissionFlag() {
return dataPermissionFlag;
}
public void setDataPermissionFlag(String dataPermissionFlag) {
this.dataPermissionFlag = dataPermissionFlag;
}
@Override
public Object getPrincipal() {
return token;
}
@Override
public Object getCredentials() {
return token;
}
public boolean isNeedUpdatePwd() {
return needUpdatePwd;
}
public void setNeedUpdatePwd(boolean needUpdatePwd) {
this.needUpdatePwd = needUpdatePwd;
}
public boolean isSpecialRole() {
return specialRole;
}
public void setSpecialRole(boolean specialRole) {
this.specialRole = specialRole;
}
/**
* 返回一个Token 构建类
*/
public JWTCreator.Builder getBuilder() {
return JWT.create().withClaim(LocalContextNames.USER_RRN_KEY, this.userRrn)
.withClaim(LocalContextNames.FACILITY_RRN_KEY, this.facilityRrn)
.withClaim(LocalContextNames.LANGUAGE_KEY, this.lanague)
.withClaim(LocalContextNames.USER_ID_KEY, this.userId).withClaim(PROCESS_RRN_KEY, this.processRrns)
.withClaim(DATA_PERMISSION_KEY, this.dataPermissionFlag).withClaim(NEED_UPDATE_PWD,this.needUpdatePwd)
.withClaim(SPECIAL_ROLE, this.specialRole);
}
/**
* 返回一个Token 验证器
*/
public Verification getVerification(Verification verification) {
return verification.withClaim(LocalContextNames.USER_RRN_KEY, this.userRrn)
.withClaim(LocalContextNames.FACILITY_RRN_KEY, this.facilityRrn)
.withClaim(LocalContextNames.LANGUAGE_KEY, this.lanague)
.withClaim(LocalContextNames.USER_ID_KEY, this.userId)
.withClaim(PROCESS_RRN_KEY, this.processRrns)
.withClaim(DATA_PERMISSION_KEY, this.dataPermissionFlag)
.withClaim(NEED_UPDATE_PWD,this.needUpdatePwd)
.withClaim(SPECIAL_ROLE, this.specialRole);
}
}