李寻欢 6f766c957d
Some checks failed
BuildImage / build-image (push) Has been cancelled
🆕 登录新增Logto兼容
2025-04-22 17:05:51 +08:00

51 lines
1.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package middleware
import (
"strings"
"gitee.ltd/lxh/wechat-robot/internal/config"
"github.com/gofiber/fiber/v2"
)
// IsAuthenticated
// @description: 检查用户是否已登录
// @param c
// @return bool
func IsAuthenticated(c *fiber.Ctx) bool {
token := c.Cookies("auth_token")
if token == "" {
return false
}
// 加载配置
cfg, err := config.Load()
if err != nil {
return false
}
// 根据认证类型验证
switch cfg.Auth.Type {
case "password":
// 对比token (简单实现,实际应用可能需要更复杂的验证)
return token == cfg.Auth.Password.SecretKey
case "logto":
// 如果是Logto认证方式检查token前缀有前缀则认为已登录
return strings.HasPrefix(token, "logto:")
default:
return false
}
}
// Authenticate
// @description: 创建身份验证中间件
// @return fiber.Handler
func Authenticate() fiber.Handler {
return func(c *fiber.Ctx) error {
// 检查是否已登录
if !IsAuthenticated(c) {
return c.Redirect("/login")
}
return c.Next()
}
}