refactor: token校验重构

This commit is contained in:
qiufeng
2024-04-15 17:54:14 +08:00
parent da3c82114d
commit c8819e40fb
7 changed files with 21 additions and 35 deletions
@@ -21,16 +21,13 @@ public abstract class AbstractTokenValidator<T> implements IBaseValidator<T> {
* 校验不同类型request中包含的token信息是否正确
*
* @param request
* @param result 如果result已存在结果不再校验
* @param <R>
* @return
*/
public <R> Result<T> validateT(R request, Result<T> result) {
if (result == null || result.getData() == null) {
String accessToken = AuthInfoUtils.getAccessToken(request);
return validate(accessToken);
}
return result;
public <R> Result<T> validateT(R request) {
String accessToken = AuthInfoUtils.getAccessToken(request);
return validate(accessToken);
}
/**
@@ -40,22 +37,14 @@ public abstract class AbstractTokenValidator<T> implements IBaseValidator<T> {
* @return
*/
public Result<T> validate(String accessToken) {
return validate(accessToken, null);
}
public Result<T> validate(String accessToken, Result<T> result) {
T token;
if (result == null || result.getData() == null) {
result = new Result<>();
if (StringUtils.isEmpty(accessToken)) {
return result.setSuccess(false).setMsg("错误:令牌token不允许为空");
}
token = (T) tokenService.getToken(accessToken);
if (token == null) {
return result.setSuccess(false).setMsg("错误:token不存在或已过期");
}
return result.setData(token);
if (StringUtils.isEmpty(accessToken)) {
Result.fail("错误:令牌token不允许为空");
}
return result;
token = (T) tokenService.getToken(accessToken);
if (token == null) {
return Result.fail("错误:token不存在或已过期");
}
return Result.ok(token);
}
}
@@ -22,11 +22,8 @@ public class TokenValidator {
public <R> Result<?> validator(R request) {
String accessToken = AuthInfoUtils.getAccessToken(request);
if (StringUtils.isEmpty(accessToken)) {
return Result.fail("错误:令牌token不允许为空");
}
Result<?> result;
if (accessToken.startsWith(SerConstant.WX_PREFIX)) {
if (!StringUtils.isEmpty(accessToken) && accessToken.startsWith(SerConstant.WX_PREFIX)) {
result = weChatTokenValidator.validate(accessToken);
} else {
result = webTokenValidator.validate(accessToken);
@@ -22,11 +22,11 @@ public class WeChatTokenValidator extends AbstractTokenValidator<WeChatToken> {
}
public Result<WeChatToken> validate(HttpServletRequest request) {
return validateT(request, null);
return validateT(request);
}
@Override
public Result<WeChatToken> validate(HttpServletRequest request, Result<WeChatToken> result) {
return validateT(request, result);
return validateT(request);
}
}
@@ -21,16 +21,16 @@ public class WebTokenValidator extends AbstractTokenValidator<RedisAccessToken>
}
public Result<RedisAccessToken> validate(ServerHttpRequest request) {
return validateT(request, null);
return validateT(request);
}
public Result<RedisAccessToken> validate(HttpServletRequest request) {
return validateT(request, null);
return validateT(request);
}
@Override
public Result<RedisAccessToken> validate(HttpServletRequest request, Result<RedisAccessToken> result) {
return validateT(request, result);
return validateT(request);
}
}
@@ -19,7 +19,7 @@ public class AllowCodeValidator extends AbstractClientValidator {
if (!result1.isSuccess()) {
return result1;
}
if(result1.getData().getGrantTypes().indexOf(GrantType.AUTHORIZATION_CODE.toString())<0){
if(!result1.getData().getGrantTypes().contains(GrantType.AUTHORIZATION_CODE.toString())){
return result1.setSuccess(false).setMsg("错误:该客户端不支持code请求方式!");
}
return result1;
@@ -43,7 +43,7 @@ public class Code2TokenValidator extends MultipleValidator {
* 校验code换token两次传入的clientId是否一致
*/
@Component
public class ClientIdEqualValidator extends AbstractCodeValidator {
public static class ClientIdEqualValidator extends AbstractCodeValidator {
@Override
public Result<AuthorizationCode> validate(HttpServletRequest request, Result<AuthorizationCode> result) {
Result<AuthorizationCode> result1 = getAuthCode(request, result);
@@ -62,7 +62,7 @@ public class Code2TokenValidator extends MultipleValidator {
* 校验code换token两次传入的uri是否一致
*/
@Component
public class UriEqualValidator extends AbstractCodeValidator {
public static class UriEqualValidator extends AbstractCodeValidator {
@Override
public Result<AuthorizationCode> validate(HttpServletRequest request, Result<AuthorizationCode> result) {
Result<AuthorizationCode> result1 = getAuthCode(request, result);
@@ -24,7 +24,7 @@ public class GrantTypeExistValidator extends AbstractClientValidator {
if (StringUtils.isEmpty(grantType)) {
return result1.setSuccess(false).setMsg("错误:grant_type为空");
}
if (result1.getData().getGrantTypes().indexOf(grantType) < 0) {
if (!result1.getData().getGrantTypes().contains(grantType)) {
return result1.setSuccess(false).setMsg("错误:该客户端不支持" + grantType + "请求方式!");
}
return result1;