优化 sa-token-spring-boot3-starter 模块注释

This commit is contained in:
click33 2023-05-11 15:34:45 +08:00
parent bc3898bf3e
commit f0ed1a37fd
6 changed files with 33 additions and 20 deletions

View File

@ -127,7 +127,9 @@ public class SaServletFilter implements SaFilter, Filter {
// 1. 获取异常处理策略结果 // 1. 获取异常处理策略结果
String result = (e instanceof BackResultException) ? e.getMessage() : String.valueOf(error.run(e)); String result = (e instanceof BackResultException) ? e.getMessage() : String.valueOf(error.run(e));
// 2. 写入输出流 // 2. 写入输出流
// 请注意此处默认 Content-Type text/plain如果需要返回 JSON 信息需要在 return 前自行设置 Content-Type application/json
// 例如SaHolder.getResponse().setHeader("Content-Type", "application/json;charset=UTF-8");
if(response.getContentType() == null) { if(response.getContentType() == null) {
response.setContentType("text/plain; charset=utf-8"); response.setContentType("text/plain; charset=utf-8");
} }

View File

@ -21,9 +21,13 @@ import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse; import jakarta.servlet.ServletResponse;
/** /**
* Servlet全局过滤器 * Servlet 全局鉴权过滤器
* @author click33 * <p>
* 默认优先级为 -100尽量保证在其它过滤器之前执行
* </p>
* *
* @author click33
* @since <= 1.34.0
*/ */
@Order(SaTokenConsts.ASSEMBLY_ORDER) @Order(SaTokenConsts.ASSEMBLY_ORDER)
public class SaServletFilter implements SaFilter, Filter { public class SaServletFilter implements SaFilter, Filter {
@ -122,7 +126,9 @@ public class SaServletFilter implements SaFilter, Filter {
// 1. 获取异常处理策略结果 // 1. 获取异常处理策略结果
String result = (e instanceof BackResultException) ? e.getMessage() : String.valueOf(error.run(e)); String result = (e instanceof BackResultException) ? e.getMessage() : String.valueOf(error.run(e));
// 2. 写入输出流 // 2. 写入输出流
// 请注意此处默认 Content-Type text/plain如果需要返回 JSON 信息需要在 return 前自行设置 Content-Type application/json
// 例如SaHolder.getResponse().setHeader("Content-Type", "application/json;charset=UTF-8");
if(response.getContentType() == null) { if(response.getContentType() == null) {
response.setContentType("text/plain; charset=utf-8"); response.setContentType("text/plain; charset=utf-8");
} }

View File

@ -78,6 +78,7 @@ public class SaInterceptor implements HandlerInterceptor {
try { try {
// 这里必须确保 handler HandlerMethod 类型时才能进行注解鉴权
if(isAnnotation && handler instanceof HandlerMethod) { if(isAnnotation && handler instanceof HandlerMethod) {
// 获取此请求对应的 Method 处理函数 // 获取此请求对应的 Method 处理函数
@ -85,6 +86,7 @@ public class SaInterceptor implements HandlerInterceptor {
// 如果此 Method 或其所属 Class 标注了 @SaIgnore则忽略掉鉴权 // 如果此 Method 或其所属 Class 标注了 @SaIgnore则忽略掉鉴权
if(SaStrategy.me.isAnnotationPresent.apply(method, SaIgnore.class)) { if(SaStrategy.me.isAnnotationPresent.apply(method, SaIgnore.class)) {
// 注意这里直接就退出整个鉴权了最底部的 auth.run() 路由拦截鉴权也被跳出了
return true; return true;
} }
@ -96,9 +98,12 @@ public class SaInterceptor implements HandlerInterceptor {
auth.run(handler); auth.run(handler);
} catch (StopMatchException e) { } catch (StopMatchException e) {
// 停止匹配进入Controller // StopMatchException 异常代表停止匹配进入Controller
} catch (BackResultException e) { } catch (BackResultException e) {
// 停止匹配向前端输出结果 // BackResultException 异常代表停止匹配向前端输出结果
// 请注意此处默认 Content-Type text/plain如果需要返回 JSON 信息需要在 back 前自行设置 Content-Type application/json
// 例如SaHolder.getResponse().setHeader("Content-Type", "application/json;charset=UTF-8");
if(response.getContentType() == null) { if(response.getContentType() == null) {
response.setContentType("text/plain; charset=utf-8"); response.setContentType("text/plain; charset=utf-8");
} }

View File

@ -9,15 +9,15 @@ import cn.dev33.satoken.servlet.model.SaResponseForServlet;
import cn.dev33.satoken.servlet.model.SaStorageForServlet; import cn.dev33.satoken.servlet.model.SaStorageForServlet;
/** /**
* Sa-Token 上下文处理器 [ SpringBoot3 Jakarta Servlet ] * Sa-Token 上下文处理器 [ SpringBoot3 Jakarta Servlet ] SpringBoot3 中使用 Sa-Token 必须注入此实现类否则会出现上下文无效异常
* *
* @author click33 * @author click33
* * @since <= 1.34.0
*/ */
public class SaTokenContextForSpringInJakartaServlet implements SaTokenContext { public class SaTokenContextForSpringInJakartaServlet implements SaTokenContext {
/** /**
* 获取当前请求的Request对象 * 获取当前请求的 Request 包装对象
*/ */
@Override @Override
public SaRequest getRequest() { public SaRequest getRequest() {
@ -25,7 +25,7 @@ public class SaTokenContextForSpringInJakartaServlet implements SaTokenContext {
} }
/** /**
* 获取当前请求的Response对象 * 获取当前请求的 Response 包装对象
*/ */
@Override @Override
public SaResponse getResponse() { public SaResponse getResponse() {
@ -33,7 +33,7 @@ public class SaTokenContextForSpringInJakartaServlet implements SaTokenContext {
} }
/** /**
* 获取当前请求的 [存储器] 对象 * 获取当前请求的 Storage 包装对象
*/ */
@Override @Override
public SaStorage getStorage() { public SaStorage getStorage() {
@ -41,7 +41,7 @@ public class SaTokenContextForSpringInJakartaServlet implements SaTokenContext {
} }
/** /**
* 校验指定路由匹配符是否可以匹配成功指定路径 * 判断指定路由匹配符是否可以匹配成功指定路径
*/ */
@Override @Override
public boolean matchPath(String pattern, String path) { public boolean matchPath(String pattern, String path) {
@ -49,7 +49,7 @@ public class SaTokenContextForSpringInJakartaServlet implements SaTokenContext {
} }
/** /**
* 此上下文是否有效 * 判断在本次请求中此上下文是否可用
*/ */
@Override @Override
public boolean isValid() { public boolean isValid() {

View File

@ -5,16 +5,15 @@ import org.springframework.context.annotation.Bean;
import cn.dev33.satoken.context.SaTokenContext; import cn.dev33.satoken.context.SaTokenContext;
/** /**
* SaTokenContext 上下文注册 * 注册 Sa-Token 框架所需要的 Bean
* *
* @author click33 * @author click33
* @since 2023年1月1日 * @since 2023年1月1日
*
*/ */
public class SaTokenContextRegister { public class SaTokenContextRegister {
/** /**
* 获取上下文Bean [ SpringBoot3 Jakarta Servlet ] * 获取上下文处理器组件 (SpringBoot3 Jakarta Servlet )
* *
* @return / * @return /
*/ */

View File

@ -9,9 +9,10 @@ import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
/** /**
* SpringMVC相关操作 * SpringMVC 相关操作工具类快速获取当前会话的 HttpServletRequestHttpServletResponse 对象
* @author click33
* *
* @author click33
* @since <= 1.34.0
*/ */
public class SpringMVCUtil { public class SpringMVCUtil {
@ -25,7 +26,7 @@ public class SpringMVCUtil {
public static HttpServletRequest getRequest() { public static HttpServletRequest getRequest() {
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if(servletRequestAttributes == null) { if(servletRequestAttributes == null) {
throw new NotWebContextException("Web上下文无法获取Request").setCode(SaSpringBootErrorCode.CODE_20101); throw new NotWebContextException(" web 上下文无法获取 HttpServletRequest").setCode(SaSpringBootErrorCode.CODE_20101);
} }
return servletRequestAttributes.getRequest(); return servletRequestAttributes.getRequest();
} }
@ -37,7 +38,7 @@ public class SpringMVCUtil {
public static HttpServletResponse getResponse() { public static HttpServletResponse getResponse() {
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if(servletRequestAttributes == null) { if(servletRequestAttributes == null) {
throw new NotWebContextException("Web上下文无法获取Response").setCode(SaSpringBootErrorCode.CODE_20101); throw new NotWebContextException(" web 上下文无法获取 HttpServletRequest").setCode(SaSpringBootErrorCode.CODE_20101);
} }
return servletRequestAttributes.getResponse(); return servletRequestAttributes.getResponse();
} }