middleware

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 13, 2026 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Overview

Package middleware 提供 SDK 级别的 Gin 中间件。

Package middleware 提供 SDK 级别的 Gin 中间件。

Package middleware 提供 SDK 级别的站点解析中间件。

Index

Constants

View Source
const (
	CtxCurrentSiteID = "current_site_id"
	CtxCurrentSite   = "current_site"
	CtxCurrentSiteDB = "current_site_db"
	CtxIsSharedMode  = "is_shared_mode"
)

gin.Context 中与「当前操作站点」相关的 key。

Variables

This section is empty.

Functions

func AdminOnly

func AdminOnly() gin.HandlerFunc

AdminOnly 在 JWTAuth 之后调用,仅允许 admin 类型 token 访问后台接口。

func AdminSiteMiddleware

func AdminSiteMiddleware() gin.HandlerFunc

AdminSiteMiddleware 用于 Admin API(/api/admin/...)的站点解析中间件。

调用前提:必须先经过 JWTAuth,已将 admin_id / is_super_admin 注入 Context。

行为:

  1. 强制从请求头 X-Site-ID 读取站点 ID(缺失或为 0 直接 400);
  2. 非超管需通过 admin_sites 校验是否拥有该站点权限(status=1);
  3. 校验站点存在且启用,加载对应 DB(shared 复用默认库 / independent 使用独立库);
  4. 注入 current_site_id / current_site / current_site_db / is_shared_mode 到 Context。

func CORS

func CORS() gin.HandlerFunc

CORS 返回允许跨域访问的中间件。

默认放开常见的 GET/POST/PUT/DELETE/OPTIONS 方法, 并允许携带 Authorization、Content-Type 等请求头。 生产环境建议把 Access-Control-Allow-Origin 替换为白名单。

func JWTAuth

func JWTAuth(cfg *config.JWTConfig) gin.HandlerFunc

JWTAuth 返回基于 Bearer Token 的鉴权中间件。

行为:

  1. 从 Authorization 头读取 "Bearer ";
  2. 调用 jwt 包解析 + 校验签名/有效期;
  3. 校验失败统一返回 401;
  4. 校验成功则把 admin_id / username / role / admin_site_id / is_super_admin 写入 gin.Context,下游 handler / 站点中间件可直接读取。

func PublicSiteMiddleware

func PublicSiteMiddleware() gin.HandlerFunc

PublicSiteMiddleware 用于 Public API(/api/v1/...)及模板路由的站点解析中间件。

站点识别优先级:

  1. X-Site-Code 请求头(前端显式指定站点 code,带 LRU 缓存);
  2. Host 头匹配(遍历所有启用站点的 Domains 字段);
  3. Debug 模式回退到第一个启用的站点(本地开发兜底)。

func PurgeSiteCache

func PurgeSiteCache()

PurgeSiteCache 清空所有站点缓存,供管理后台手动调用。

func RequirePermission

func RequirePermission(code string) gin.HandlerFunc

RequirePermission 返回一个权限校验中间件。 超级管理员(IsSuperAdmin=true)自动放行,普通管理员需要 permissions 列表中包含 code。

func RequirePlugin

func RequirePlugin(pluginCode string, checker contracts.IPluginChecker) gin.HandlerFunc

RequirePlugin 返回一个中间件,检查指定插件是否已安装启用。

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL