package middleware import ( "net/http" "picgo/configs" "picgo/corelib" "picgo/data" "strings" ) // LoginMiddleware 登录 // 添加日志中间件到路由器 使用:r.Handle("/", LoginMiddleware(http.HandlerFunc(handler))) func LoginMiddleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { resPath := r.URL.Path if resPath == "/login" || resPath == "/captcha" || strings.HasPrefix(resPath, "/static") { next.ServeHTTP(w, r) } session, _ := corelib.SessionStore.Get(r, configs.Settings.Server.SessionName) username, ok := session.Values["username"].(string) if !ok || username == "" { http.Redirect(w, r, "/login", http.StatusFound) return } var ( //user model.SysUser err error ) if _, err = data.SysUserSelectByUsername(username); err != nil { http.Redirect(w, r, "/login", http.StatusFound) return } next.ServeHTTP(w, r) }) }