Merge branch 'dromara:dev' into dev

This commit is contained in:
weloe
2023-05-05 18:18:30 +08:00
committed by GitHub
61 changed files with 1552 additions and 630 deletions

View File

@@ -1,7 +1,5 @@
package cn.dev33.satoken.servlet.model;
import java.io.IOException;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.context.model.SaRequest;
import cn.dev33.satoken.exception.SaTokenException;
@@ -12,6 +10,9 @@ import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
/**
* Request for Jakarta Servlet
* @author kong
@@ -48,6 +49,36 @@ public class SaRequestForServlet implements SaRequest {
return request.getParameter(name);
}
/**
* 获取 [请求体] 里提交的所有参数名称
* @return 参数名称列表
*/
@Override
public List<String> getParamNames(){
Enumeration<String> parameterNames = request.getParameterNames();
List<String> list = new ArrayList<>();
while (parameterNames.hasMoreElements()) {
list.add(parameterNames.nextElement());
}
return list;
}
/**
* 获取 [请求体] 里提交的所有参数
* @return 参数列表
*/
@Override
public Map<String, String> getParamMap(){
// 获取所有参数
Map<String, String[]> parameterMap = request.getParameterMap();
Map<String, String> map = new LinkedHashMap<>(parameterMap.size());
for (String key : parameterMap.keySet()) {
String[] values = parameterMap.get(key);
map.put(key, values[0]);
}
return map;
}
/**
* 在 [请求头] 里获取一个值
*/

View File

@@ -91,8 +91,8 @@ public class SaTokenPathFilter implements SaFilter {
public void doFilter(Controller ctx, FilterChain chain) throws Throwable {
try {
// 执行全局过滤器
beforeAuth.run(null);
SaRouter.match(includeList).notMatch(excludeList).check(r -> {
beforeAuth.run(null);
auth.run(null);
});

View File

@@ -91,8 +91,8 @@ public class SaTokenPathFilter implements SaFilter {
public void doFilter(Controller ctx, FilterChain chain) throws Throwable {
try {
// 执行全局过滤器
beforeAuth.run(null);
SaRouter.match(includeList).notMatch(excludeList).check(r -> {
beforeAuth.run(null);
auth.run(null);
});

View File

@@ -119,9 +119,9 @@ public class SaReactorFilter implements SaFilter, WebFilter {
// 写入全局上下文 (同步)
SaReactorSyncHolder.setContext(exchange);
// 执行全局过滤器
// 执行全局过滤器
beforeAuth.run(null);
SaRouter.match(includeList).notMatch(excludeList).check(r -> {
beforeAuth.run(null);
auth.run(null);
});

View File

@@ -12,6 +12,8 @@ import cn.dev33.satoken.reactor.context.SaReactorHolder;
import cn.dev33.satoken.reactor.context.SaReactorSyncHolder;
import cn.dev33.satoken.util.SaFoxUtil;
import java.util.*;
/**
* Request for Reactor
* @author kong
@@ -48,6 +50,25 @@ public class SaRequestForReactor implements SaRequest {
return request.getQueryParams().getFirst(name);
}
/**
* 获取 [请求体] 里提交的所有参数名称
* @return 参数名称列表
*/
@Override
public List<String> getParamNames(){
Set<String> names = request.getQueryParams().keySet();
return new ArrayList<>(names);
}
/**
* 获取 [请求体] 里提交的所有参数
* @return 参数列表
*/
@Override
public Map<String, String> getParamMap(){
return request.getQueryParams().toSingleValueMap();
}
/**
* 在 [请求头] 里获取一个值
*/

View File

@@ -119,9 +119,9 @@ public class SaReactorFilter implements SaFilter, WebFilter {
// 写入全局上下文 (同步)
SaReactorSyncHolder.setContext(exchange);
// 执行全局过滤器
// 执行全局过滤器
beforeAuth.run(null);
SaRouter.match(includeList).notMatch(excludeList).check(r -> {
beforeAuth.run(null);
auth.run(null);
});

View File

@@ -12,6 +12,11 @@ import cn.dev33.satoken.reactor.context.SaReactorHolder;
import cn.dev33.satoken.reactor.context.SaReactorSyncHolder;
import cn.dev33.satoken.util.SaFoxUtil;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* Request for Reactor
* @author kong
@@ -48,6 +53,25 @@ public class SaRequestForReactor implements SaRequest {
return request.getQueryParams().getFirst(name);
}
/**
* 获取 [请求体] 里提交的所有参数名称
* @return 参数名称列表
*/
@Override
public List<String> getParamNames(){
Set<String> names = request.getQueryParams().keySet();
return new ArrayList<>(names);
}
/**
* 获取 [请求体] 里提交的所有参数
* @return 参数列表
*/
@Override
public Map<String, String> getParamMap(){
return request.getQueryParams().toSingleValueMap();
}
/**
* 在 [请求头] 里获取一个值
*/

View File

@@ -1,6 +1,7 @@
package cn.dev33.satoken.servlet.model;
import java.io.IOException;
import java.util.*;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
@@ -49,6 +50,36 @@ public class SaRequestForServlet implements SaRequest {
return request.getParameter(name);
}
/**
* 获取 [请求体] 里提交的所有参数名称
* @return 参数名称列表
*/
@Override
public List<String> getParamNames(){
Enumeration<String> parameterNames = request.getParameterNames();
List<String> list = new ArrayList<>();
while (parameterNames.hasMoreElements()) {
list.add(parameterNames.nextElement());
}
return list;
}
/**
* 获取 [请求体] 里提交的所有参数
* @return 参数列表
*/
@Override
public Map<String, String> getParamMap(){
// 获取所有参数
Map<String, String[]> parameterMap = request.getParameterMap();
Map<String, String> map = new LinkedHashMap<>(parameterMap.size());
for (String key : parameterMap.keySet()) {
String[] values = parameterMap.get(key);
map.put(key, values[0]);
}
return map;
}
/**
* 在 [请求头] 里获取一个值
*/

View File

@@ -123,12 +123,13 @@ public class SaTokenFilter implements SaFilter, Filter { //之所以改名,为
Handler mainHandler = Solon.app().router().matchMain(ctx);
Action action = (mainHandler instanceof Action ? (Action) mainHandler : null);
//1.执行前置处理(主要是一些跨域之类的)
if(beforeAuth != null) {
beforeAuth.run(mainHandler);
}
//先路径过滤下(包括了静态文件)
SaRouter.match(includeList).notMatch(excludeList).check(r -> {
//1.执行前置处理(主要是一些跨域之类的)
if(beforeAuth != null) {
beforeAuth.run(mainHandler);
}
//2.执行注解处理
if(authAnno(action)) {
//3.执行规则处理(如果没有被 @SaIgnore 忽略)

View File

@@ -172,19 +172,19 @@ public class SaTokenInterceptor implements RouterInterceptor {
try {
Action action = (mainHandler instanceof Action ? (Action) mainHandler : null);
//先路径过滤下(包括了静态文件
//1.执行前置处理(主要是一些跨域之类的
if(beforeAuth != null) {
beforeAuth.run(mainHandler);
}
//先路径过滤下(不包括静态文件)
SaRouter.match(includeList).notMatch(excludeList).check(r -> {
//1.执行前置处理(主要是一些跨域之类的)
if(beforeAuth != null) {
beforeAuth.run(mainHandler);
}
//2.执行注解处理
if(authAnno(action)) {
//3.执行规则处理(如果没有被 @SaIgnore 忽略)
auth.run(mainHandler);
}
});
} catch (StopMatchException e) {
} catch (SaTokenException e) {

View File

@@ -5,6 +5,11 @@ import cn.dev33.satoken.context.model.SaRequest;
import cn.dev33.satoken.util.SaFoxUtil;
import org.noear.solon.core.handle.Context;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @author noear
* @since 1.4
@@ -27,6 +32,21 @@ public class SaRequestForSolon implements SaRequest {
return ctx.param(s);
}
@Override
public List<String> getParamNames(){
Set<String> names = ctx.paramMap().keySet();
return new ArrayList<>(names);
}
/**
* 获取 [请求体] 里提交的所有参数
* @return 参数列表
*/
@Override
public Map<String, String> getParamMap(){
return ctx.paramMap();
}
@Override
public String getHeader(String s) {
return ctx.header(s);

View File

@@ -111,9 +111,9 @@ public class SaServletFilter implements SaFilter, Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
try {
// 执行全局过滤器
// 执行全局过滤器
beforeAuth.run(null);
SaRouter.match(includeList).notMatch(excludeList).check(r -> {
beforeAuth.run(null);
auth.run(null);
});

View File

@@ -110,9 +110,9 @@ public class SaServletFilter implements SaFilter, Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
try {
// 执行全局过滤器
// 执行全局过滤器
beforeAuth.run(null);
SaRouter.match(includeList).notMatch(excludeList).check(r -> {
beforeAuth.run(null);
auth.run(null);
});