34 lines
944 B
Go
34 lines
944 B
Go
package middleware
|
|
|
|
import "strings"
|
|
|
|
// ============================== 免登录路由白名单 ==============================
|
|
|
|
// publicPaths 免登录路由白名单
|
|
//
|
|
// 精确匹配,公开路由一律不带版本前缀;
|
|
// 须与各注册处保持一致:auth.go 的 gmeta 标注(登录、验证码、令牌兑换)
|
|
// 以及 router.go 中的健康检查
|
|
var publicPaths = map[string]bool{
|
|
"/api/login": true,
|
|
"/api/register": true,
|
|
"/api/captcha": true,
|
|
"/api/oauth2/token": true, // refresh_token 兑换
|
|
"/api/health": true, // 健康检查
|
|
}
|
|
|
|
// IsPublicPath 判断是否为免登录路由
|
|
//
|
|
// 供身份认证与租户中间件据此放行;
|
|
// 同时放行 OpenAPI 与 Swagger 文档路径
|
|
func IsPublicPath(path string) bool {
|
|
if publicPaths[path] {
|
|
return true
|
|
}
|
|
// OpenAPI / Swagger 文档
|
|
if path == "/api.json" || strings.HasPrefix(path, "/swagger") {
|
|
return true
|
|
}
|
|
return false
|
|
}
|