新增SaRouter.back()函数,用于停止匹配返回结果

This commit is contained in:
click33
2021-07-01 16:30:29 +08:00
parent 7b69b7915b
commit 40b82ce602
10 changed files with 90 additions and 33 deletions
@@ -14,6 +14,7 @@ import javax.servlet.ServletResponse;
import org.springframework.core.annotation.Order;
import cn.dev33.satoken.exception.BackResultException;
import cn.dev33.satoken.exception.SaTokenException;
import cn.dev33.satoken.exception.StopMatchException;
import cn.dev33.satoken.router.SaRouter;
@@ -163,14 +164,13 @@ public class SaServletFilter implements Filter {
} catch (Throwable e) {
// 1. 获取异常处理策略结果
Object result = error.run(e);
String resultString = String.valueOf(result);
String result = (e instanceof BackResultException) ? e.getMessage() : String.valueOf(error.run(e));
// 2. 写入输出流
if(response.getContentType() == null) {
response.setContentType("text/plain; charset=utf-8");
}
response.getWriter().print(resultString);
response.getWriter().print(result);
return;
}
@@ -5,6 +5,7 @@ import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import cn.dev33.satoken.exception.BackResultException;
import cn.dev33.satoken.exception.StopMatchException;
import cn.dev33.satoken.router.SaRouteFunction;
import cn.dev33.satoken.servlet.model.SaRequestForServlet;
@@ -63,6 +64,14 @@ public class SaRouteInterceptor implements HandlerInterceptor {
try {
function.run(new SaRequestForServlet(request), new SaResponseForServlet(response), handler);
} catch (StopMatchException e) {
// 停止匹配,进入Controller
} catch (BackResultException e) {
// 停止匹配,向前端输出结果
if(response.getContentType() == null) {
response.setContentType("text/plain; charset=utf-8");
}
response.getWriter().print(e.getMessage());
return false;
}
}