更新底层架构

This commit is contained in:
2026-03-18 21:51:17 +08:00
parent b69c6ccbca
commit 68bea98b81
71 changed files with 5220 additions and 7619 deletions

View File

@@ -3,8 +3,6 @@ package utils
import (
"net/http"
"time"
"github.com/spf13/viper"
)
// ============================================================================
@@ -15,7 +13,10 @@ import (
// name: Cookie名称
// value: Cookie值
// maxAge: 过期时间0表示会话Cookie-1表示立即过期
func CreateSecureCookie(name, value string, maxAge int) *http.Cookie {
// domain: Cookie域名
// secure: 是否只在HTTPS下发送
// sameSiteStr: SameSite属性Strict/Lax/None
func CreateSecureCookie(name, value string, maxAge int, domain string, secure bool, sameSiteStr string) *http.Cookie {
cookie := &http.Cookie{
Name: name,
Value: value,
@@ -24,14 +25,13 @@ func CreateSecureCookie(name, value string, maxAge int) *http.Cookie {
MaxAge: maxAge,
}
// 从配置读取安全设置
if viper.GetBool("security.cookie.secure") {
// 设置安全属性
if secure {
cookie.Secure = true
}
// 设置SameSite属性
sameSite := viper.GetString("security.cookie.same_site")
switch sameSite {
switch sameSiteStr {
case "Strict":
cookie.SameSite = http.SameSiteStrictMode
case "Lax":
@@ -44,8 +44,7 @@ func CreateSecureCookie(name, value string, maxAge int) *http.Cookie {
cookie.SameSite = http.SameSiteStrictMode
}
// 设置Domain(如果配置了)
domain := viper.GetString("security.cookie.domain")
// 设置Domain
if domain != "" {
cookie.Domain = domain
}
@@ -62,24 +61,11 @@ func CreateSecureCookie(name, value string, maxAge int) *http.Cookie {
}
// CreateSessionCookie 创建会话Cookie浏览器关闭时过期
func CreateSessionCookie(name, value string) *http.Cookie {
return CreateSecureCookie(name, value, 0)
func CreateSessionCookie(name, value string, domain string, secure bool, sameSiteStr string) *http.Cookie {
return CreateSecureCookie(name, value, 0, domain, secure, sameSiteStr)
}
// CreateExpiredCookie 创建立即过期的Cookie用于清理
func CreateExpiredCookie(name string) *http.Cookie {
return CreateSecureCookie(name, "", -1)
}
// ============================================================================
// 配置函数
// ============================================================================
// GetDefaultCookieMaxAge 获取默认Cookie过期时间
func GetDefaultCookieMaxAge() int {
maxAge := viper.GetInt("security.cookie.max_age")
if maxAge <= 0 {
return 86400 // 默认24小时
}
return maxAge
func CreateExpiredCookie(name string, domain string) *http.Cookie {
return CreateSecureCookie(name, "", -1, domain, false, "Lax")
}