mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-29 05:56:38 +08:00
feat(http): make trailing-slash redirect configurable
This commit is contained in:
@@ -15,6 +15,7 @@ type httpAppConfig struct {
|
||||
SessionAge int `config:"session_age" env:"APP_SESSION_AGE" default:"86400"`
|
||||
SessionHTTPOnly bool `config:"session_http_only" env:"APP_SESSION_HTTP_ONLY" default:"true"`
|
||||
SessionSecure bool `config:"session_secure" env:"APP_SESSION_SECURE"`
|
||||
RedirectTrailingSlash *bool `config:"redirect_trailing_slash" env:"APP_REDIRECT_TRAILING_SLASH"`
|
||||
}
|
||||
|
||||
type httpRedisConfig struct {
|
||||
|
||||
@@ -31,6 +31,11 @@ func BuildEngineWithConfig(appCfg httpAppConfig, redisCfg httpRedisConfig) (*gin
|
||||
|
||||
// 初始化路由
|
||||
r := gin.New()
|
||||
redirect := true
|
||||
if appCfg.RedirectTrailingSlash != nil {
|
||||
redirect = *appCfg.RedirectTrailingSlash
|
||||
}
|
||||
r.RedirectTrailingSlash = redirect
|
||||
r.Use(gin.Recovery())
|
||||
r.Use(corsMiddleware())
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
// Copyright 2026 Arctel.net
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
package driver_http
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestBuildEngineDefaultRedirectsTrailingSlash(t *testing.T) {
|
||||
eng, err := BuildEngineWithConfig(httpAppConfig{}, httpRedisConfig{})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !eng.RedirectTrailingSlash {
|
||||
t.Fatal("default RedirectTrailingSlash must be true")
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildEngineCanDisableRedirectTrailingSlash(t *testing.T) {
|
||||
eng, err := BuildEngineWithConfig(httpAppConfig{RedirectTrailingSlash: boolPtr(false)}, httpRedisConfig{})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if eng.RedirectTrailingSlash {
|
||||
t.Fatal("RedirectTrailingSlash must honor false")
|
||||
}
|
||||
}
|
||||
|
||||
func boolPtr(v bool) *bool { return &v }
|
||||
Reference in New Issue
Block a user