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

表示一个具体的拦截规则配置,包含三个属性:

  1. Type (InterceptType): 指定拦截的类型(使用上面的枚举值)
  2. Pattern (string): 匹配模式,支持通配符(*表示任意多个字符,?表示单个字符)
    • 例如:/api/* 可以匹配所有以/api/开头的路径
  3. Key (string?): 可选属性,当拦截类型是HeaderQueryParameter时,用于指定要检查的键名
    • 例如:如果Type是Header,Key可以是"Authorization"

功能说明

这个结构主要用于配置HTTP请求的拦截规则,可以用于:

  • 请求过滤
  • 访问控制
  • 安全防护
  • 路由控制

例如,可以创建规则:

  • 拦截所有/admin/*路径的请求(Type=Uri, Pattern="/admin/*")
  • 拦截包含特定查询参数的请求(Type=QueryParameter, Key="token", Pattern="123*")
  • 拦截特定User-Agent的请求(Type=UserAgent, Pattern="bot")

这种设计提供了灵活的请求拦截能力,可以用于API网关、中间件或安全模块中。

评论加载中...