namespace Dpz.Core.Entity.Base.PublicStruct;
/// <summary>
/// 拦截规则配置类
/// </summary>
public class InterceptRule
{
/// <summary>
/// 拦截类型
/// </summary>
public InterceptType Type { get; set; }
/// <summary>
/// 匹配模式(支持通配符 * 和 ?)
/// </summary>
public string Pattern { get; set; } = string.Empty;
/// <summary>
/// 当类型为Header或QueryParameter时,指定键名
/// </summary>
public string? Key { get; set; }
}
/// <summary>
/// 拦截类型枚举
/// </summary>
public enum InterceptType
{
/// <summary>
/// URI 路径拦截
/// </summary>
Uri = 1,
/// <summary>
/// 请求方法拦截
/// </summary>
RequestMethod = 2,
/// <summary>
/// 客户端IP拦截
/// </summary>
ClientIp = 3,
/// <summary>
/// User-Agent拦截
/// </summary>
UserAgent = 4,
/// <summary>
/// 请求参数拦截
/// </summary>
QueryParameter = 5,
/// <summary>
/// 请求头拦截
/// </summary>
Header = 6,
}⚠⚠ 以下内容为AI分析的结果,请根据实际情况进行判断。
这段代码定义了一个用于请求拦截规则的配置结构,主要包含两个部分:InterceptRule类和InterceptType枚举。
1. InterceptType 枚举
定义了6种拦截类型:
Uri(1): 基于URI路径的拦截RequestMethod(2): 基于HTTP请求方法(GET/POST等)的拦截ClientIp(3): 基于客户端IP地址的拦截UserAgent(4): 基于User-Agent请求头的拦截QueryParameter(5): 基于查询参数的拦截Header(6): 基于请求头的拦截
2. InterceptRule 类
表示一个具体的拦截规则配置,包含三个属性:
Type(InterceptType): 指定拦截的类型(使用上面的枚举值)Pattern(string): 匹配模式,支持通配符(*表示任意多个字符,?表示单个字符)- 例如:
/api/*可以匹配所有以/api/开头的路径
- 例如:
Key(string?): 可选属性,当拦截类型是Header或QueryParameter时,用于指定要检查的键名- 例如:如果Type是Header,Key可以是"Authorization"
功能说明
这个结构主要用于配置HTTP请求的拦截规则,可以用于:
- 请求过滤
- 访问控制
- 安全防护
- 路由控制
例如,可以创建规则:
- 拦截所有
/admin/*路径的请求(Type=Uri, Pattern="/admin/*") - 拦截包含特定查询参数的请求(Type=QueryParameter, Key="token", Pattern="123*")
- 拦截特定User-Agent的请求(Type=UserAgent, Pattern="bot")
这种设计提供了灵活的请求拦截能力,可以用于API网关、中间件或安全模块中。
评论加载中...