@@ -11,12 +11,13 @@ import (
1111 "strings"
1212
1313 "config"
14- "github.com/gorilla/context"
15- "github.com/gorilla/sessions"
16- "github.com/studygolang/mux"
1714 "logger"
1815 "service"
1916 "util"
17+
18+ "github.com/gorilla/context"
19+ "github.com/gorilla/sessions"
20+ "github.com/studygolang/mux"
2021)
2122
2223// 没登陆且没有cookie,则跳转到登录页
@@ -79,6 +80,7 @@ func (this *CookieFilter) PreFilter(rw http.ResponseWriter, req *http.Request) b
7980 if user != nil && req .RequestURI == "/account/login" {
8081 util .Redirect (rw , req , "/" )
8182 }
83+
8284 return true
8385}
8486
@@ -107,20 +109,35 @@ func setUser(req *http.Request, user map[string]interface{}) {
107109var Store = sessions .NewCookieStore ([]byte (config .Config ["cookie_secret" ]))
108110
109111// 获得当前登录用户
110- func CurrentUser (req * http.Request ) (map [string ]interface {}, bool ) {
111- user := getUser (req )
112+ func CurrentUser (req * http.Request ) (user map [string ]interface {}, succ bool ) {
113+
114+ defer func () {
115+ // 判断用户是否能登陆
116+ if ! service .IsNormalUser (user ["status" ]) {
117+ user , succ = nil , false
118+ }
119+ }()
120+
121+ succ = true
122+
123+ user = getUser (req )
112124 if len (user ) != 0 {
113- return user , true
125+ return
114126 }
115127 session , _ := Store .Get (req , "user" )
116128 username , ok := session .Values ["username" ]
117129 if ! ok {
118- return nil , false
130+ succ = false
131+ return
119132 }
120- user , err := service .FindCurrentUser (username .(string ))
133+
134+ var err error
135+ user , err = service .FindCurrentUser (username .(string ))
121136 if err != nil {
122- return nil , false
137+ succ = false
138+ return
123139 }
140+
124141 setUser (req , user )
125- return user , true
142+ return
126143}
0 commit comments