mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-04-05 17:37:53 +08:00
抽离过滤器接口 SaFilter
This commit is contained in:
parent
14fc74ec9d
commit
bc855f2b1b
@ -0,0 +1,70 @@
|
|||||||
|
package cn.dev33.satoken.filter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sa-Token 过滤器接口,为不同版本的过滤器:
|
||||||
|
* 1、封装共同代码。
|
||||||
|
* 2、定义统一的行为接口。
|
||||||
|
*
|
||||||
|
* @author click33
|
||||||
|
* @since 2023/4/29
|
||||||
|
*/
|
||||||
|
public interface SaFilter {
|
||||||
|
|
||||||
|
// ------------------------ 设置此过滤器 拦截 & 放行 的路由
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加 [ 拦截路由 ]
|
||||||
|
* @param paths 路由
|
||||||
|
* @return 对象自身
|
||||||
|
*/
|
||||||
|
public SaFilter addInclude(String... paths);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加 [ 放行路由 ]
|
||||||
|
* @param paths 路由
|
||||||
|
* @return 对象自身
|
||||||
|
*/
|
||||||
|
public SaFilter addExclude(String... paths);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 写入 [ 拦截路由 ] 集合
|
||||||
|
* @param pathList 路由集合
|
||||||
|
* @return 对象自身
|
||||||
|
*/
|
||||||
|
public SaFilter setIncludeList(List<String> pathList);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 写入 [ 放行路由 ] 集合
|
||||||
|
* @param pathList 路由集合
|
||||||
|
* @return 对象自身
|
||||||
|
*/
|
||||||
|
public SaFilter setExcludeList(List<String> pathList);
|
||||||
|
|
||||||
|
|
||||||
|
// ------------------------ 钩子函数
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 写入[ 认证函数 ]: 每次请求执行
|
||||||
|
* @param auth see note
|
||||||
|
* @return 对象自身
|
||||||
|
*/
|
||||||
|
public SaFilter setAuth(SaFilterAuthStrategy auth);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 写入[ 异常处理函数 ]:每次[ 认证函数 ]发生异常时执行此函数
|
||||||
|
* @param error see note
|
||||||
|
* @return 对象自身
|
||||||
|
*/
|
||||||
|
public SaFilter setError(SaFilterErrorStrategy error);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 写入[ 前置函数 ]:在每次[ 认证函数 ]之前执行。
|
||||||
|
* <b>注意点:前置认证函数将不受 includeList 与 excludeList 的限制,所有路由的请求都会进入 beforeAuth</b>
|
||||||
|
* @param beforeAuth /
|
||||||
|
* @return 对象自身
|
||||||
|
*/
|
||||||
|
public SaFilter setBeforeAuth(SaFilterAuthStrategy beforeAuth);
|
||||||
|
|
||||||
|
}
|
@ -6,6 +6,13 @@
|
|||||||
<artifactId>sa-token-demo-solon</artifactId>
|
<artifactId>sa-token-demo-solon</artifactId>
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
|
||||||
|
<!-- Solon -->
|
||||||
|
<parent>
|
||||||
|
<groupId>org.noear</groupId>
|
||||||
|
<artifactId>solon-parent</artifactId>
|
||||||
|
<version>2.2.3</version>
|
||||||
|
<relativePath/>
|
||||||
|
</parent>
|
||||||
|
|
||||||
<!-- 定义 Sa-Token 版本号 -->
|
<!-- 定义 Sa-Token 版本号 -->
|
||||||
<properties>
|
<properties>
|
||||||
|
@ -6,6 +6,14 @@
|
|||||||
<artifactId>sa-token-demo-sso-server-solon</artifactId>
|
<artifactId>sa-token-demo-sso-server-solon</artifactId>
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
|
||||||
|
<!-- Solon -->
|
||||||
|
<parent>
|
||||||
|
<groupId>org.noear</groupId>
|
||||||
|
<artifactId>solon-parent</artifactId>
|
||||||
|
<version>2.2.3</version>
|
||||||
|
<relativePath/>
|
||||||
|
</parent>
|
||||||
|
|
||||||
<!-- 定义 Sa-Token 版本号 -->
|
<!-- 定义 Sa-Token 版本号 -->
|
||||||
<properties>
|
<properties>
|
||||||
<sa-token.version>1.34.0</sa-token.version>
|
<sa-token.version>1.34.0</sa-token.version>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.pj;
|
package com.pj;
|
||||||
|
|
||||||
import cn.dev33.satoken.SaManager;
|
import cn.dev33.satoken.SaManager;
|
||||||
|
import cn.dev33.satoken.filter.SaServletFilter;
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>cn.dev33</groupId>
|
<groupId>cn.dev33</groupId>
|
||||||
|
@ -3,81 +3,50 @@ package cn.dev33.satoken.jboot;
|
|||||||
import cn.dev33.satoken.exception.SaTokenException;
|
import cn.dev33.satoken.exception.SaTokenException;
|
||||||
import cn.dev33.satoken.filter.SaFilterAuthStrategy;
|
import cn.dev33.satoken.filter.SaFilterAuthStrategy;
|
||||||
import cn.dev33.satoken.filter.SaFilterErrorStrategy;
|
import cn.dev33.satoken.filter.SaFilterErrorStrategy;
|
||||||
|
import cn.dev33.satoken.filter.SaFilter;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class SaTokenPathFilter {
|
public class SaTokenPathFilter implements SaFilter {
|
||||||
|
|
||||||
// ------------------------ 设置此过滤器 拦截 & 放行 的路由
|
// ------------------------ 设置此过滤器 拦截 & 放行 的路由
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 拦截路由
|
* 拦截路由
|
||||||
*/
|
*/
|
||||||
private List<String> includeList = new ArrayList<>();
|
public List<String> includeList = new ArrayList<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 放行路由
|
* 放行路由
|
||||||
*/
|
*/
|
||||||
private List<String> excludeList = new ArrayList<>();
|
public List<String> excludeList = new ArrayList<>();
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 添加 [拦截路由]
|
|
||||||
* @param paths 路由
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaTokenPathFilter addInclude(String... paths) {
|
public SaTokenPathFilter addInclude(String... paths) {
|
||||||
includeList.addAll(Arrays.asList(paths));
|
includeList.addAll(Arrays.asList(paths));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 添加 [放行路由]
|
|
||||||
* @param paths 路由
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaTokenPathFilter addExclude(String... paths) {
|
public SaTokenPathFilter addExclude(String... paths) {
|
||||||
excludeList.addAll(Arrays.asList(paths));
|
excludeList.addAll(Arrays.asList(paths));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入 [拦截路由] 集合
|
|
||||||
* @param pathList 路由集合
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaTokenPathFilter setIncludeList(List<String> pathList) {
|
public SaTokenPathFilter setIncludeList(List<String> pathList) {
|
||||||
includeList = pathList;
|
includeList = pathList;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入 [放行路由] 集合
|
|
||||||
* @param pathList 路由集合
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaTokenPathFilter setExcludeList(List<String> pathList) {
|
public SaTokenPathFilter setExcludeList(List<String> pathList) {
|
||||||
excludeList = pathList;
|
excludeList = pathList;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取 [拦截路由] 集合
|
|
||||||
* @return see note
|
|
||||||
*/
|
|
||||||
public List<String> getIncludeList() {
|
|
||||||
return includeList;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取 [放行路由] 集合
|
|
||||||
* @return see note
|
|
||||||
*/
|
|
||||||
public List<String> getExcludeList() {
|
|
||||||
return excludeList;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ------------------------ 钩子函数
|
// ------------------------ 钩子函数
|
||||||
|
|
||||||
@ -95,34 +64,23 @@ public class SaTokenPathFilter {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 前置函数:在每次[认证函数]之前执行
|
* 前置函数:在每次[认证函数]之前执行
|
||||||
|
* <b>注意点:前置认证函数将不受 includeList 与 excludeList 的限制,所有路由的请求都会进入 beforeAuth</b>
|
||||||
*/
|
*/
|
||||||
public SaFilterAuthStrategy beforeAuth = r -> {};
|
public SaFilterAuthStrategy beforeAuth = r -> {};
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入[认证函数]: 每次请求执行
|
|
||||||
* @param auth see note
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaTokenPathFilter setAuth(SaFilterAuthStrategy auth) {
|
public SaTokenPathFilter setAuth(SaFilterAuthStrategy auth) {
|
||||||
this.auth = auth;
|
this.auth = auth;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入[异常处理函数]:每次[认证函数]发生异常时执行此函数
|
|
||||||
* @param error see note
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaTokenPathFilter setError(SaFilterErrorStrategy error) {
|
public SaTokenPathFilter setError(SaFilterErrorStrategy error) {
|
||||||
this.error = error;
|
this.error = error;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入[前置函数]:在每次[认证函数]之前执行
|
|
||||||
* @param beforeAuth see note
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaTokenPathFilter setBeforeAuth(SaFilterAuthStrategy beforeAuth) {
|
public SaTokenPathFilter setBeforeAuth(SaFilterAuthStrategy beforeAuth) {
|
||||||
this.beforeAuth = beforeAuth;
|
this.beforeAuth = beforeAuth;
|
||||||
return this;
|
return this;
|
||||||
|
@ -3,81 +3,50 @@ package cn.dev33.satoken.jfinal;
|
|||||||
import cn.dev33.satoken.exception.SaTokenException;
|
import cn.dev33.satoken.exception.SaTokenException;
|
||||||
import cn.dev33.satoken.filter.SaFilterAuthStrategy;
|
import cn.dev33.satoken.filter.SaFilterAuthStrategy;
|
||||||
import cn.dev33.satoken.filter.SaFilterErrorStrategy;
|
import cn.dev33.satoken.filter.SaFilterErrorStrategy;
|
||||||
|
import cn.dev33.satoken.filter.SaFilter;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class SaTokenPathFilter {
|
public class SaTokenPathFilter implements SaFilter {
|
||||||
|
|
||||||
// ------------------------ 设置此过滤器 拦截 & 放行 的路由
|
// ------------------------ 设置此过滤器 拦截 & 放行 的路由
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 拦截路由
|
* 拦截路由
|
||||||
*/
|
*/
|
||||||
private List<String> includeList = new ArrayList<>();
|
public List<String> includeList = new ArrayList<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 放行路由
|
* 放行路由
|
||||||
*/
|
*/
|
||||||
private List<String> excludeList = new ArrayList<>();
|
public List<String> excludeList = new ArrayList<>();
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 添加 [拦截路由]
|
|
||||||
* @param paths 路由
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaTokenPathFilter addInclude(String... paths) {
|
public SaTokenPathFilter addInclude(String... paths) {
|
||||||
includeList.addAll(Arrays.asList(paths));
|
includeList.addAll(Arrays.asList(paths));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 添加 [放行路由]
|
|
||||||
* @param paths 路由
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaTokenPathFilter addExclude(String... paths) {
|
public SaTokenPathFilter addExclude(String... paths) {
|
||||||
excludeList.addAll(Arrays.asList(paths));
|
excludeList.addAll(Arrays.asList(paths));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入 [拦截路由] 集合
|
|
||||||
* @param pathList 路由集合
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaTokenPathFilter setIncludeList(List<String> pathList) {
|
public SaTokenPathFilter setIncludeList(List<String> pathList) {
|
||||||
includeList = pathList;
|
includeList = pathList;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入 [放行路由] 集合
|
|
||||||
* @param pathList 路由集合
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaTokenPathFilter setExcludeList(List<String> pathList) {
|
public SaTokenPathFilter setExcludeList(List<String> pathList) {
|
||||||
excludeList = pathList;
|
excludeList = pathList;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取 [拦截路由] 集合
|
|
||||||
* @return see note
|
|
||||||
*/
|
|
||||||
public List<String> getIncludeList() {
|
|
||||||
return includeList;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取 [放行路由] 集合
|
|
||||||
* @return see note
|
|
||||||
*/
|
|
||||||
public List<String> getExcludeList() {
|
|
||||||
return excludeList;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ------------------------ 钩子函数
|
// ------------------------ 钩子函数
|
||||||
|
|
||||||
@ -95,34 +64,23 @@ public class SaTokenPathFilter {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 前置函数:在每次[认证函数]之前执行
|
* 前置函数:在每次[认证函数]之前执行
|
||||||
|
* <b>注意点:前置认证函数将不受 includeList 与 excludeList 的限制,所有路由的请求都会进入 beforeAuth</b>
|
||||||
*/
|
*/
|
||||||
public SaFilterAuthStrategy beforeAuth = r -> {};
|
public SaFilterAuthStrategy beforeAuth = r -> {};
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入[认证函数]: 每次请求执行
|
|
||||||
* @param auth see note
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaTokenPathFilter setAuth(SaFilterAuthStrategy auth) {
|
public SaTokenPathFilter setAuth(SaFilterAuthStrategy auth) {
|
||||||
this.auth = auth;
|
this.auth = auth;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入[异常处理函数]:每次[认证函数]发生异常时执行此函数
|
|
||||||
* @param error see note
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaTokenPathFilter setError(SaFilterErrorStrategy error) {
|
public SaTokenPathFilter setError(SaFilterErrorStrategy error) {
|
||||||
this.error = error;
|
this.error = error;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入[前置函数]:在每次[认证函数]之前执行
|
|
||||||
* @param beforeAuth see note
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaTokenPathFilter setBeforeAuth(SaFilterAuthStrategy beforeAuth) {
|
public SaTokenPathFilter setBeforeAuth(SaFilterAuthStrategy beforeAuth) {
|
||||||
this.beforeAuth = beforeAuth;
|
this.beforeAuth = beforeAuth;
|
||||||
return this;
|
return this;
|
||||||
|
@ -4,6 +4,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.filter.SaFilter;
|
||||||
import org.springframework.core.annotation.Order;
|
import org.springframework.core.annotation.Order;
|
||||||
import org.springframework.web.server.ServerWebExchange;
|
import org.springframework.web.server.ServerWebExchange;
|
||||||
import org.springframework.web.server.WebFilter;
|
import org.springframework.web.server.WebFilter;
|
||||||
@ -27,75 +28,43 @@ import reactor.core.publisher.Mono;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@Order(SaTokenConsts.ASSEMBLY_ORDER)
|
@Order(SaTokenConsts.ASSEMBLY_ORDER)
|
||||||
public class SaReactorFilter implements WebFilter {
|
public class SaReactorFilter implements SaFilter, WebFilter {
|
||||||
|
|
||||||
// ------------------------ 设置此过滤器 拦截 & 放行 的路由
|
// ------------------------ 设置此过滤器 拦截 & 放行 的路由
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 拦截路由
|
* 拦截路由
|
||||||
*/
|
*/
|
||||||
private List<String> includeList = new ArrayList<>();
|
public List<String> includeList = new ArrayList<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 放行路由
|
* 放行路由
|
||||||
*/
|
*/
|
||||||
private List<String> excludeList = new ArrayList<>();
|
public List<String> excludeList = new ArrayList<>();
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 添加 [拦截路由]
|
|
||||||
* @param paths 路由
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaReactorFilter addInclude(String... paths) {
|
public SaReactorFilter addInclude(String... paths) {
|
||||||
includeList.addAll(Arrays.asList(paths));
|
includeList.addAll(Arrays.asList(paths));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 添加 [放行路由]
|
|
||||||
* @param paths 路由
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaReactorFilter addExclude(String... paths) {
|
public SaReactorFilter addExclude(String... paths) {
|
||||||
excludeList.addAll(Arrays.asList(paths));
|
excludeList.addAll(Arrays.asList(paths));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入 [拦截路由] 集合
|
|
||||||
* @param pathList 路由集合
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaReactorFilter setIncludeList(List<String> pathList) {
|
public SaReactorFilter setIncludeList(List<String> pathList) {
|
||||||
includeList = pathList;
|
includeList = pathList;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入 [放行路由] 集合
|
|
||||||
* @param pathList 路由集合
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaReactorFilter setExcludeList(List<String> pathList) {
|
public SaReactorFilter setExcludeList(List<String> pathList) {
|
||||||
excludeList = pathList;
|
excludeList = pathList;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取 [拦截路由] 集合
|
|
||||||
* @return see note
|
|
||||||
*/
|
|
||||||
public List<String> getIncludeList() {
|
|
||||||
return includeList;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取 [放行路由] 集合
|
|
||||||
* @return see note
|
|
||||||
*/
|
|
||||||
public List<String> getExcludeList() {
|
|
||||||
return excludeList;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ------------------------ 钩子函数
|
// ------------------------ 钩子函数
|
||||||
@ -113,35 +82,24 @@ public class SaReactorFilter implements WebFilter {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 前置函数:在每次[认证函数]之前执行
|
* 前置函数:在每次[认证函数]之前执行
|
||||||
|
* <b>注意点:前置认证函数将不受 includeList 与 excludeList 的限制,所有路由的请求都会进入 beforeAuth</b>
|
||||||
*/
|
*/
|
||||||
public SaFilterAuthStrategy beforeAuth = r -> {};
|
public SaFilterAuthStrategy beforeAuth = r -> {};
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入[认证函数]: 每次请求执行
|
|
||||||
* @param auth see note
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaReactorFilter setAuth(SaFilterAuthStrategy auth) {
|
public SaReactorFilter setAuth(SaFilterAuthStrategy auth) {
|
||||||
this.auth = auth;
|
this.auth = auth;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入[异常处理函数]:每次[认证函数]发生异常时执行此函数
|
|
||||||
* @param error see note
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaReactorFilter setError(SaFilterErrorStrategy error) {
|
public SaReactorFilter setError(SaFilterErrorStrategy error) {
|
||||||
this.error = error;
|
this.error = error;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入[前置函数]:在每次[认证函数]之前执行
|
|
||||||
* @param beforeAuth see note
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaReactorFilter setBeforeAuth(SaFilterAuthStrategy beforeAuth) {
|
public SaReactorFilter setBeforeAuth(SaFilterAuthStrategy beforeAuth) {
|
||||||
this.beforeAuth = beforeAuth;
|
this.beforeAuth = beforeAuth;
|
||||||
return this;
|
return this;
|
||||||
|
@ -4,6 +4,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.filter.SaFilter;
|
||||||
import org.springframework.core.annotation.Order;
|
import org.springframework.core.annotation.Order;
|
||||||
import org.springframework.web.server.ServerWebExchange;
|
import org.springframework.web.server.ServerWebExchange;
|
||||||
import org.springframework.web.server.WebFilter;
|
import org.springframework.web.server.WebFilter;
|
||||||
@ -27,75 +28,43 @@ import reactor.core.publisher.Mono;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@Order(SaTokenConsts.ASSEMBLY_ORDER)
|
@Order(SaTokenConsts.ASSEMBLY_ORDER)
|
||||||
public class SaReactorFilter implements WebFilter {
|
public class SaReactorFilter implements SaFilter, WebFilter {
|
||||||
|
|
||||||
// ------------------------ 设置此过滤器 拦截 & 放行 的路由
|
// ------------------------ 设置此过滤器 拦截 & 放行 的路由
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 拦截路由
|
* 拦截路由
|
||||||
*/
|
*/
|
||||||
private List<String> includeList = new ArrayList<>();
|
public List<String> includeList = new ArrayList<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 放行路由
|
* 放行路由
|
||||||
*/
|
*/
|
||||||
private List<String> excludeList = new ArrayList<>();
|
public List<String> excludeList = new ArrayList<>();
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 添加 [拦截路由]
|
|
||||||
* @param paths 路由
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaReactorFilter addInclude(String... paths) {
|
public SaReactorFilter addInclude(String... paths) {
|
||||||
includeList.addAll(Arrays.asList(paths));
|
includeList.addAll(Arrays.asList(paths));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 添加 [放行路由]
|
|
||||||
* @param paths 路由
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaReactorFilter addExclude(String... paths) {
|
public SaReactorFilter addExclude(String... paths) {
|
||||||
excludeList.addAll(Arrays.asList(paths));
|
excludeList.addAll(Arrays.asList(paths));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入 [拦截路由] 集合
|
|
||||||
* @param pathList 路由集合
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaReactorFilter setIncludeList(List<String> pathList) {
|
public SaReactorFilter setIncludeList(List<String> pathList) {
|
||||||
includeList = pathList;
|
includeList = pathList;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入 [放行路由] 集合
|
|
||||||
* @param pathList 路由集合
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaReactorFilter setExcludeList(List<String> pathList) {
|
public SaReactorFilter setExcludeList(List<String> pathList) {
|
||||||
excludeList = pathList;
|
excludeList = pathList;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取 [拦截路由] 集合
|
|
||||||
* @return see note
|
|
||||||
*/
|
|
||||||
public List<String> getIncludeList() {
|
|
||||||
return includeList;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取 [放行路由] 集合
|
|
||||||
* @return see note
|
|
||||||
*/
|
|
||||||
public List<String> getExcludeList() {
|
|
||||||
return excludeList;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ------------------------ 钩子函数
|
// ------------------------ 钩子函数
|
||||||
@ -113,35 +82,24 @@ public class SaReactorFilter implements WebFilter {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 前置函数:在每次[认证函数]之前执行
|
* 前置函数:在每次[认证函数]之前执行
|
||||||
|
* <b>注意点:前置认证函数将不受 includeList 与 excludeList 的限制,所有路由的请求都会进入 beforeAuth</b>
|
||||||
*/
|
*/
|
||||||
public SaFilterAuthStrategy beforeAuth = r -> {};
|
public SaFilterAuthStrategy beforeAuth = r -> {};
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入[认证函数]: 每次请求执行
|
|
||||||
* @param auth see note
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaReactorFilter setAuth(SaFilterAuthStrategy auth) {
|
public SaReactorFilter setAuth(SaFilterAuthStrategy auth) {
|
||||||
this.auth = auth;
|
this.auth = auth;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入[异常处理函数]:每次[认证函数]发生异常时执行此函数
|
|
||||||
* @param error see note
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaReactorFilter setError(SaFilterErrorStrategy error) {
|
public SaReactorFilter setError(SaFilterErrorStrategy error) {
|
||||||
this.error = error;
|
this.error = error;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入[前置函数]:在每次[认证函数]之前执行
|
|
||||||
* @param beforeAuth see note
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaReactorFilter setBeforeAuth(SaFilterAuthStrategy beforeAuth) {
|
public SaReactorFilter setBeforeAuth(SaFilterAuthStrategy beforeAuth) {
|
||||||
this.beforeAuth = beforeAuth;
|
this.beforeAuth = beforeAuth;
|
||||||
return this;
|
return this;
|
||||||
|
@ -6,6 +6,7 @@ import cn.dev33.satoken.exception.SaTokenException;
|
|||||||
import cn.dev33.satoken.exception.StopMatchException;
|
import cn.dev33.satoken.exception.StopMatchException;
|
||||||
import cn.dev33.satoken.filter.SaFilterAuthStrategy;
|
import cn.dev33.satoken.filter.SaFilterAuthStrategy;
|
||||||
import cn.dev33.satoken.filter.SaFilterErrorStrategy;
|
import cn.dev33.satoken.filter.SaFilterErrorStrategy;
|
||||||
|
import cn.dev33.satoken.filter.SaFilter;
|
||||||
import cn.dev33.satoken.router.SaRouter;
|
import cn.dev33.satoken.router.SaRouter;
|
||||||
import cn.dev33.satoken.strategy.SaStrategy;
|
import cn.dev33.satoken.strategy.SaStrategy;
|
||||||
import org.noear.solon.Solon;
|
import org.noear.solon.Solon;
|
||||||
@ -26,7 +27,8 @@ import java.util.List;
|
|||||||
* @author noear
|
* @author noear
|
||||||
* @since 1.10
|
* @since 1.10
|
||||||
*/
|
*/
|
||||||
public class SaTokenFilter implements Filter { //之所以改名,为了跟 SaTokenInterceptor 形成一对
|
public class SaTokenFilter implements SaFilter, Filter { //之所以改名,为了跟 SaTokenInterceptor 形成一对
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否打开注解鉴权
|
* 是否打开注解鉴权
|
||||||
*/
|
*/
|
||||||
@ -37,88 +39,50 @@ public class SaTokenFilter implements Filter { //之所以改名,为了跟 SaT
|
|||||||
/**
|
/**
|
||||||
* 拦截路由
|
* 拦截路由
|
||||||
*/
|
*/
|
||||||
protected List<String> includeList = new ArrayList<>();
|
public List<String> includeList = new ArrayList<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 放行路由
|
* 放行路由
|
||||||
*/
|
*/
|
||||||
protected List<String> excludeList = new ArrayList<>();
|
public List<String> excludeList = new ArrayList<>();
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 添加 [拦截路由]
|
|
||||||
*
|
|
||||||
* @param paths 路由
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaTokenFilter addInclude(String... paths) {
|
public SaTokenFilter addInclude(String... paths) {
|
||||||
includeList.addAll(Arrays.asList(paths));
|
includeList.addAll(Arrays.asList(paths));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 添加 [放行路由]
|
|
||||||
*
|
|
||||||
* @param paths 路由
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaTokenFilter addExclude(String... paths) {
|
public SaTokenFilter addExclude(String... paths) {
|
||||||
excludeList.addAll(Arrays.asList(paths));
|
excludeList.addAll(Arrays.asList(paths));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入 [拦截路由] 集合
|
|
||||||
*
|
|
||||||
* @param pathList 路由集合
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaTokenFilter setIncludeList(List<String> pathList) {
|
public SaTokenFilter setIncludeList(List<String> pathList) {
|
||||||
includeList = pathList;
|
includeList = pathList;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入 [放行路由] 集合
|
|
||||||
*
|
|
||||||
* @param pathList 路由集合
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaTokenFilter setExcludeList(List<String> pathList) {
|
public SaTokenFilter setExcludeList(List<String> pathList) {
|
||||||
excludeList = pathList;
|
excludeList = pathList;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取 [拦截路由] 集合
|
|
||||||
*
|
|
||||||
* @return see note
|
|
||||||
*/
|
|
||||||
public List<String> getIncludeList() {
|
|
||||||
return includeList;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取 [放行路由] 集合
|
|
||||||
*
|
|
||||||
* @return see note
|
|
||||||
*/
|
|
||||||
public List<String> getExcludeList() {
|
|
||||||
return excludeList;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ------------------------ 钩子函数
|
// ------------------------ 钩子函数
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 认证函数:每次请求执行
|
* 认证函数:每次请求执行
|
||||||
*/
|
*/
|
||||||
protected SaFilterAuthStrategy auth = r -> {
|
public SaFilterAuthStrategy auth = r -> {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 异常处理函数:每次[认证函数]发生异常时执行此函数
|
* 异常处理函数:每次[认证函数]发生异常时执行此函数
|
||||||
*/
|
*/
|
||||||
protected SaFilterErrorStrategy error = e -> {
|
public SaFilterErrorStrategy error = e -> {
|
||||||
if (e instanceof SaTokenException) {
|
if (e instanceof SaTokenException) {
|
||||||
throw (SaTokenException) e;
|
throw (SaTokenException) e;
|
||||||
} else {
|
} else {
|
||||||
@ -128,38 +92,24 @@ public class SaTokenFilter implements Filter { //之所以改名,为了跟 SaT
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 前置函数:在每次[认证函数]之前执行
|
* 前置函数:在每次[认证函数]之前执行
|
||||||
|
* <b>注意点:前置认证函数将不受 includeList 与 excludeList 的限制,所有路由的请求都会进入 beforeAuth</b>
|
||||||
*/
|
*/
|
||||||
protected SaFilterAuthStrategy beforeAuth = r -> {
|
public SaFilterAuthStrategy beforeAuth = r -> {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入[认证函数]: 每次请求执行
|
|
||||||
*
|
|
||||||
* @param auth see note
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaTokenFilter setAuth(SaFilterAuthStrategy auth) {
|
public SaTokenFilter setAuth(SaFilterAuthStrategy auth) {
|
||||||
this.auth = auth;
|
this.auth = auth;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入[异常处理函数]:每次[认证函数]发生异常时执行此函数
|
|
||||||
*
|
|
||||||
* @param error see note
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaTokenFilter setError(SaFilterErrorStrategy error) {
|
public SaTokenFilter setError(SaFilterErrorStrategy error) {
|
||||||
this.error = error;
|
this.error = error;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入[前置函数]:在每次[认证函数]之前执行
|
|
||||||
*
|
|
||||||
* @param beforeAuth see note
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaTokenFilter setBeforeAuth(SaFilterAuthStrategy beforeAuth) {
|
public SaTokenFilter setBeforeAuth(SaFilterAuthStrategy beforeAuth) {
|
||||||
this.beforeAuth = beforeAuth;
|
this.beforeAuth = beforeAuth;
|
||||||
return this;
|
return this;
|
||||||
|
@ -27,75 +27,43 @@ import cn.dev33.satoken.util.SaTokenConsts;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@Order(SaTokenConsts.ASSEMBLY_ORDER)
|
@Order(SaTokenConsts.ASSEMBLY_ORDER)
|
||||||
public class SaServletFilter implements Filter {
|
public class SaServletFilter implements SaFilter, Filter {
|
||||||
|
|
||||||
// ------------------------ 设置此过滤器 拦截 & 放行 的路由
|
// ------------------------ 设置此过滤器 拦截 & 放行 的路由
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 拦截路由
|
* 拦截路由
|
||||||
*/
|
*/
|
||||||
private List<String> includeList = new ArrayList<>();
|
public List<String> includeList = new ArrayList<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 放行路由
|
* 放行路由
|
||||||
*/
|
*/
|
||||||
private List<String> excludeList = new ArrayList<>();
|
public List<String> excludeList = new ArrayList<>();
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 添加 [拦截路由]
|
|
||||||
* @param paths 路由
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaServletFilter addInclude(String... paths) {
|
public SaServletFilter addInclude(String... paths) {
|
||||||
includeList.addAll(Arrays.asList(paths));
|
includeList.addAll(Arrays.asList(paths));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 添加 [放行路由]
|
|
||||||
* @param paths 路由
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaServletFilter addExclude(String... paths) {
|
public SaServletFilter addExclude(String... paths) {
|
||||||
excludeList.addAll(Arrays.asList(paths));
|
excludeList.addAll(Arrays.asList(paths));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入 [拦截路由] 集合
|
|
||||||
* @param pathList 路由集合
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaServletFilter setIncludeList(List<String> pathList) {
|
public SaServletFilter setIncludeList(List<String> pathList) {
|
||||||
includeList = pathList;
|
includeList = pathList;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入 [放行路由] 集合
|
|
||||||
* @param pathList 路由集合
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaServletFilter setExcludeList(List<String> pathList) {
|
public SaServletFilter setExcludeList(List<String> pathList) {
|
||||||
excludeList = pathList;
|
excludeList = pathList;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取 [拦截路由] 集合
|
|
||||||
* @return see note
|
|
||||||
*/
|
|
||||||
public List<String> getIncludeList() {
|
|
||||||
return includeList;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取 [放行路由] 集合
|
|
||||||
* @return see note
|
|
||||||
*/
|
|
||||||
public List<String> getExcludeList() {
|
|
||||||
return excludeList;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ------------------------ 钩子函数
|
// ------------------------ 钩子函数
|
||||||
@ -113,35 +81,24 @@ public class SaServletFilter implements Filter {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 前置函数:在每次[认证函数]之前执行
|
* 前置函数:在每次[认证函数]之前执行
|
||||||
|
* <b>注意点:前置认证函数将不受 includeList 与 excludeList 的限制,所有路由的请求都会进入 beforeAuth</b>
|
||||||
*/
|
*/
|
||||||
public SaFilterAuthStrategy beforeAuth = r -> {};
|
public SaFilterAuthStrategy beforeAuth = r -> {};
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入[认证函数]: 每次请求执行
|
|
||||||
* @param auth see note
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaServletFilter setAuth(SaFilterAuthStrategy auth) {
|
public SaServletFilter setAuth(SaFilterAuthStrategy auth) {
|
||||||
this.auth = auth;
|
this.auth = auth;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入[异常处理函数]:每次[认证函数]发生异常时执行此函数
|
|
||||||
* @param error see note
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaServletFilter setError(SaFilterErrorStrategy error) {
|
public SaServletFilter setError(SaFilterErrorStrategy error) {
|
||||||
this.error = error;
|
this.error = error;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入[前置函数]:在每次[认证函数]之前执行
|
|
||||||
* @param beforeAuth see note
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaServletFilter setBeforeAuth(SaFilterAuthStrategy beforeAuth) {
|
public SaServletFilter setBeforeAuth(SaFilterAuthStrategy beforeAuth) {
|
||||||
this.beforeAuth = beforeAuth;
|
this.beforeAuth = beforeAuth;
|
||||||
return this;
|
return this;
|
||||||
@ -151,8 +108,7 @@ public class SaServletFilter implements Filter {
|
|||||||
// ------------------------ doFilter
|
// ------------------------ doFilter
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
|
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
|
||||||
throws IOException, ServletException {
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// 执行全局过滤器
|
// 执行全局过滤器
|
||||||
|
@ -26,75 +26,43 @@ import jakarta.servlet.ServletResponse;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@Order(SaTokenConsts.ASSEMBLY_ORDER)
|
@Order(SaTokenConsts.ASSEMBLY_ORDER)
|
||||||
public class SaServletFilter implements Filter {
|
public class SaServletFilter implements SaFilter, Filter {
|
||||||
|
|
||||||
// ------------------------ 设置此过滤器 拦截 & 放行 的路由
|
// ------------------------ 设置此过滤器 拦截 & 放行 的路由
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 拦截路由
|
* 拦截路由
|
||||||
*/
|
*/
|
||||||
private List<String> includeList = new ArrayList<>();
|
public List<String> includeList = new ArrayList<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 放行路由
|
* 放行路由
|
||||||
*/
|
*/
|
||||||
private List<String> excludeList = new ArrayList<>();
|
public List<String> excludeList = new ArrayList<>();
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 添加 [拦截路由]
|
|
||||||
* @param paths 路由
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaServletFilter addInclude(String... paths) {
|
public SaServletFilter addInclude(String... paths) {
|
||||||
includeList.addAll(Arrays.asList(paths));
|
includeList.addAll(Arrays.asList(paths));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 添加 [放行路由]
|
|
||||||
* @param paths 路由
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaServletFilter addExclude(String... paths) {
|
public SaServletFilter addExclude(String... paths) {
|
||||||
excludeList.addAll(Arrays.asList(paths));
|
excludeList.addAll(Arrays.asList(paths));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入 [拦截路由] 集合
|
|
||||||
* @param pathList 路由集合
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaServletFilter setIncludeList(List<String> pathList) {
|
public SaServletFilter setIncludeList(List<String> pathList) {
|
||||||
includeList = pathList;
|
includeList = pathList;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入 [放行路由] 集合
|
|
||||||
* @param pathList 路由集合
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaServletFilter setExcludeList(List<String> pathList) {
|
public SaServletFilter setExcludeList(List<String> pathList) {
|
||||||
excludeList = pathList;
|
excludeList = pathList;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取 [拦截路由] 集合
|
|
||||||
* @return see note
|
|
||||||
*/
|
|
||||||
public List<String> getIncludeList() {
|
|
||||||
return includeList;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取 [放行路由] 集合
|
|
||||||
* @return see note
|
|
||||||
*/
|
|
||||||
public List<String> getExcludeList() {
|
|
||||||
return excludeList;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ------------------------ 钩子函数
|
// ------------------------ 钩子函数
|
||||||
@ -112,35 +80,24 @@ public class SaServletFilter implements Filter {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 前置函数:在每次[认证函数]之前执行
|
* 前置函数:在每次[认证函数]之前执行
|
||||||
|
* <b>注意点:前置认证函数将不受 includeList 与 excludeList 的限制,所有路由的请求都会进入 beforeAuth</b>
|
||||||
*/
|
*/
|
||||||
public SaFilterAuthStrategy beforeAuth = r -> {};
|
public SaFilterAuthStrategy beforeAuth = r -> {};
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入[认证函数]: 每次请求执行
|
|
||||||
* @param auth see note
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaServletFilter setAuth(SaFilterAuthStrategy auth) {
|
public SaServletFilter setAuth(SaFilterAuthStrategy auth) {
|
||||||
this.auth = auth;
|
this.auth = auth;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入[异常处理函数]:每次[认证函数]发生异常时执行此函数
|
|
||||||
* @param error see note
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaServletFilter setError(SaFilterErrorStrategy error) {
|
public SaServletFilter setError(SaFilterErrorStrategy error) {
|
||||||
this.error = error;
|
this.error = error;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 写入[前置函数]:在每次[认证函数]之前执行
|
|
||||||
* @param beforeAuth see note
|
|
||||||
* @return 对象自身
|
|
||||||
*/
|
|
||||||
public SaServletFilter setBeforeAuth(SaFilterAuthStrategy beforeAuth) {
|
public SaServletFilter setBeforeAuth(SaFilterAuthStrategy beforeAuth) {
|
||||||
this.beforeAuth = beforeAuth;
|
this.beforeAuth = beforeAuth;
|
||||||
return this;
|
return this;
|
||||||
@ -150,8 +107,7 @@ public class SaServletFilter implements Filter {
|
|||||||
// ------------------------ doFilter
|
// ------------------------ doFilter
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
|
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
|
||||||
throws IOException, ServletException {
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// 执行全局过滤器
|
// 执行全局过滤器
|
||||||
@ -179,7 +135,7 @@ public class SaServletFilter implements Filter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(FilterConfig filterConfig) throws ServletException {
|
public void init(FilterConfig filterConfig) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -762,8 +762,8 @@ public class BasicsTest {
|
|||||||
.setAuth(obj -> {})
|
.setAuth(obj -> {})
|
||||||
.setBeforeAuth(obj -> {})
|
.setBeforeAuth(obj -> {})
|
||||||
;
|
;
|
||||||
Assertions.assertEquals(filter.getIncludeList().get(0), "/**");
|
Assertions.assertEquals(filter.includeList.get(0), "/**");
|
||||||
Assertions.assertEquals(filter.getExcludeList().get(0), "/favicon.ico");
|
Assertions.assertEquals(filter.excludeList.get(0), "/favicon.ico");
|
||||||
// 以下功能无法测试
|
// 以下功能无法测试
|
||||||
filter.init(null);
|
filter.init(null);
|
||||||
filter.doFilter(SpringMVCUtil.getRequest(), SpringMVCUtil.getResponse(), new MockFilterChain());
|
filter.doFilter(SpringMVCUtil.getRequest(), SpringMVCUtil.getResponse(), new MockFilterChain());
|
||||||
|
Loading…
Reference in New Issue
Block a user