feat: 初始提交 - Code Server Bridge完整实现
- OAuth认证系统(Gitea + Lua扩展) - Git自动化操作(本地/SSH远程) - 实时进度WebSocket推送 - 现代化Tab界面UI - Cobra CLI命令行(init/version/serve) - 完整构建系统(Makefile + Taskfile) - UPX压缩支持(体积减少70%)
This commit is contained in:
42
internal/http/middleware/session.go
Normal file
42
internal/http/middleware/session.go
Normal file
@@ -0,0 +1,42 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/gorilla/sessions"
|
||||
)
|
||||
|
||||
var store = sessions.NewCookieStore([]byte("123456"))
|
||||
|
||||
func GetSession(r *http.Request) (*sessions.Session, error) {
|
||||
return store.Get(r, "transit")
|
||||
}
|
||||
|
||||
// RequireLogin 登录验证中间件
|
||||
// 检查用户是否已登录,未登录则重定向到OAuth登录页面
|
||||
func RequireLogin(next http.Handler) http.Handler {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
session, err := GetSession(r)
|
||||
if err != nil {
|
||||
// Session读取失败,保存原始URL后重定向到登录
|
||||
session, _ = store.New(r, "transit")
|
||||
session.Values["redirect_after_login"] = r.URL.RequestURI()
|
||||
session.Save(r, w)
|
||||
http.Redirect(w, r, "/oauth/gitea", http.StatusFound)
|
||||
return
|
||||
}
|
||||
|
||||
// 检查session中是否有用户信息
|
||||
userID := session.Values["uid"]
|
||||
if userID == nil {
|
||||
// 未登录,保存原始URL后重定向到OAuth登录
|
||||
session.Values["redirect_after_login"] = r.URL.RequestURI()
|
||||
session.Save(r, w)
|
||||
http.Redirect(w, r, "/oauth/gitea", http.StatusFound)
|
||||
return
|
||||
}
|
||||
|
||||
// 已登录,继续处理请求
|
||||
next.ServeHTTP(w, r)
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user