Merge remote-tracking branch 'origin/master'
# Conflicts: # bonus-gateway/src/main/java/com/bonus/gateway/filter/ValidateCodeFilter.java
This commit is contained in:
commit
d136050374
|
|
@ -2,6 +2,7 @@ package com.bonus.auth.controller;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import com.bonus.common.core.utils.global.SystemGlobal;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||||
|
|
@ -46,7 +47,7 @@ public class TokenController
|
||||||
public R<?> logout(HttpServletRequest request) {
|
public R<?> logout(HttpServletRequest request) {
|
||||||
try{
|
try{
|
||||||
String token = SecurityUtils.getToken(request);
|
String token = SecurityUtils.getToken(request);
|
||||||
if (StringUtils.isNotEmpty(token))
|
if (StringUtils.isNotEmpty(token) && !SystemGlobal.undefined.equals(token.toLowerCase()))
|
||||||
{
|
{
|
||||||
String username = JwtUtils.getUserName(token);
|
String username = JwtUtils.getUserName(token);
|
||||||
String userId= JwtUtils.getUserId(token);
|
String userId= JwtUtils.getUserId(token);
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,65 @@ public class CaptchaException extends RuntimeException
|
||||||
{
|
{
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
public CaptchaException(String msg)
|
|
||||||
|
/**
|
||||||
|
* 错误码
|
||||||
|
*/
|
||||||
|
private Integer code;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 错误提示
|
||||||
|
*/
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 错误明细,内部调试错误
|
||||||
|
*/
|
||||||
|
private String detailMessage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 空构造方法,避免反序列化问题
|
||||||
|
*/
|
||||||
|
public CaptchaException()
|
||||||
{
|
{
|
||||||
super(msg);
|
}
|
||||||
|
|
||||||
|
public CaptchaException(String message)
|
||||||
|
{
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CaptchaException(String message, Integer code)
|
||||||
|
{
|
||||||
|
this.message = message;
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDetailMessage()
|
||||||
|
{
|
||||||
|
return detailMessage;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getMessage()
|
||||||
|
{
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getCode()
|
||||||
|
{
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CaptchaException setMessage(String message)
|
||||||
|
{
|
||||||
|
this.message = message;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CaptchaException setDetailMessage(String detailMessage)
|
||||||
|
{
|
||||||
|
this.detailMessage = detailMessage;
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,11 @@ package com.bonus.common.core.utils.global;
|
||||||
* 全局变量
|
* 全局变量
|
||||||
*/
|
*/
|
||||||
public class SystemGlobal {
|
public class SystemGlobal {
|
||||||
|
/**
|
||||||
|
* true
|
||||||
|
*/
|
||||||
|
public static String undefined="undefined";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* true
|
* true
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -103,8 +103,7 @@ public class TokenService
|
||||||
LoginUser user = null;
|
LoginUser user = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (StringUtils.isNotEmpty(token))
|
if (StringUtils.isNotEmpty(token)) {
|
||||||
{
|
|
||||||
String userkey = JwtUtils.getUserKey(token);
|
String userkey = JwtUtils.getUserKey(token);
|
||||||
user = redisService.getCacheObject(getTokenKey(userkey));
|
user = redisService.getCacheObject(getTokenKey(userkey));
|
||||||
return user;
|
return user;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.bonus.gateway.filter;
|
package com.bonus.gateway.filter;
|
||||||
|
|
||||||
|
import com.bonus.common.core.utils.StringHelper;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
@ -9,6 +10,7 @@ import org.springframework.cloud.gateway.filter.GlobalFilter;
|
||||||
import org.springframework.core.Ordered;
|
import org.springframework.core.Ordered;
|
||||||
import org.springframework.http.server.reactive.ServerHttpRequest;
|
import org.springframework.http.server.reactive.ServerHttpRequest;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.util.MultiValueMap;
|
||||||
import org.springframework.web.server.ServerWebExchange;
|
import org.springframework.web.server.ServerWebExchange;
|
||||||
import com.bonus.common.core.constant.CacheConstants;
|
import com.bonus.common.core.constant.CacheConstants;
|
||||||
import com.bonus.common.core.constant.HttpStatus;
|
import com.bonus.common.core.constant.HttpStatus;
|
||||||
|
|
@ -140,10 +142,18 @@ public class AuthFilter implements GlobalFilter, Ordered
|
||||||
{
|
{
|
||||||
String token = request.getHeaders().getFirst(TokenConstants.AUTHENTICATION);
|
String token = request.getHeaders().getFirst(TokenConstants.AUTHENTICATION);
|
||||||
// 如果前端设置了令牌前缀,则裁剪掉前缀
|
// 如果前端设置了令牌前缀,则裁剪掉前缀
|
||||||
if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX))
|
if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX)) {
|
||||||
{
|
|
||||||
token = token.replaceFirst(TokenConstants.PREFIX, StringUtils.EMPTY);
|
token = token.replaceFirst(TokenConstants.PREFIX, StringUtils.EMPTY);
|
||||||
}
|
}
|
||||||
|
if(StringHelper.isEmpty(token)){
|
||||||
|
MultiValueMap<String,String> maps=request.getQueryParams();
|
||||||
|
if(maps!=null && maps.get(TokenConstants.AUTHENTICATION)!=null && maps.get(TokenConstants.AUTHENTICATION).size()>0){
|
||||||
|
token =maps.get(TokenConstants.AUTHENTICATION).get(0);
|
||||||
|
if("null".equals(token)){
|
||||||
|
token=null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return token;
|
return token;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,9 @@
|
||||||
package com.bonus.gateway.handler;
|
package com.bonus.gateway.handler;
|
||||||
|
|
||||||
|
import com.bonus.common.core.exception.GlobalException;
|
||||||
|
import com.bonus.common.core.exception.ServiceException;
|
||||||
|
import com.bonus.common.core.utils.StringUtils;
|
||||||
|
import com.bonus.common.core.web.domain.AjaxResult;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.cloud.gateway.support.NotFoundException;
|
import org.springframework.cloud.gateway.support.NotFoundException;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
@ -8,11 +12,14 @@ import org.springframework.boot.web.reactive.error.ErrorWebExceptionHandler;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.core.annotation.Order;
|
import org.springframework.core.annotation.Order;
|
||||||
import org.springframework.http.server.reactive.ServerHttpResponse;
|
import org.springframework.http.server.reactive.ServerHttpResponse;
|
||||||
|
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||||
import org.springframework.web.server.ResponseStatusException;
|
import org.springframework.web.server.ResponseStatusException;
|
||||||
import org.springframework.web.server.ServerWebExchange;
|
import org.springframework.web.server.ServerWebExchange;
|
||||||
import com.bonus.common.core.utils.ServletUtils;
|
import com.bonus.common.core.utils.ServletUtils;
|
||||||
import reactor.core.publisher.Mono;
|
import reactor.core.publisher.Mono;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 网关统一异常处理
|
* 网关统一异常处理
|
||||||
*
|
*
|
||||||
|
|
@ -27,6 +34,16 @@ public class GatewayExceptionHandler implements ErrorWebExceptionHandler
|
||||||
|
|
||||||
|
|
||||||
private static final Logger log = LoggerFactory.getLogger(GatewayExceptionHandler.class);
|
private static final Logger log = LoggerFactory.getLogger(GatewayExceptionHandler.class);
|
||||||
|
/**
|
||||||
|
* 验证码异常处理
|
||||||
|
*/
|
||||||
|
@ExceptionHandler(GlobalException.class)
|
||||||
|
public AjaxResult handleGlobalException(ServiceException e, HttpServletRequest request)
|
||||||
|
{
|
||||||
|
log.error(e.getMessage(), e);
|
||||||
|
Integer code = e.getCode();
|
||||||
|
return StringUtils.isNotNull(code) ? AjaxResult.error(code, e.getMessage()) : AjaxResult.error(e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Mono<Void> handle(ServerWebExchange exchange, Throwable ex)
|
public Mono<Void> handle(ServerWebExchange exchange, Throwable ex)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue