mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-09-19 01:58:05 +08:00
Merge branch 'dromara:dev' into dev
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 在 [请求头] 里获取一个值
|
||||
*/
|
||||
|
@@ -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);
|
||||
});
|
||||
|
||||
|
@@ -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);
|
||||
});
|
||||
|
||||
|
@@ -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);
|
||||
});
|
||||
|
||||
|
@@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
* 在 [请求头] 里获取一个值
|
||||
*/
|
||||
|
@@ -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);
|
||||
});
|
||||
|
||||
|
@@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
* 在 [请求头] 里获取一个值
|
||||
*/
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 在 [请求头] 里获取一个值
|
||||
*/
|
||||
|
@@ -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 忽略)
|
||||
|
@@ -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) {
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
});
|
||||
|
||||
|
@@ -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);
|
||||
});
|
||||
|
||||
|
Reference in New Issue
Block a user