我封装了个 验证session是否存在 函数,
并且我在 http的每个访问路由页面都调用了
**我想问下 大家在不用任何框架的情况下 如何验证是否登录状态的**
~~~
然后我一些用户中心的页面头部都加了这个一个调用函数,
但是我尝试谢了个post接收的接口 就在第一句就加了这个,当尝试注册的时候既然通过了注册成功
虽然他提示 没有找到session 但是后面的代码他依然执行了 不知道为什么!
IsSessionAdminLogin(w, r)
~~~
~~~
func IsSessionAdminLogin(w http.ResponseWriter, r *http.Request) {
//result := false
sess2 := globalsessions.SessionStart(w, r)
getUser := sess2.Get("muser")
if getUser == nil {
//result = false
//http.Redirect(w, r, "logout", 301)
fmt.Fprintln(w, "没有找到session,重定向到退出Loout")
return
} else {
//result = true
fmt.Fprintln(w, "恭喜!登录成功")
return
}
//return result
}
~~~
<a href="/user/channel" title="@channel">@channel</a> 就这样的例子 你看下, 当HTML的post过来 他既然成功的添加了数据库数据, 按理说代码应该到session不存在就结束了 无法访问了额
~~~
func IsSessionAdminLogin(w http.ResponseWriter, r *http.Request) {
//result := false
sess2 := globalsessions.SessionStart(w, r)
getUser := sess2.Get("muser")
if getUser == nil {
//result = false
//http.Redirect(w, r, "logout", 301)
fmt.Fprintln(w, "没有找到session,重定向到退出Loout")
return
} else {
//result = true
fmt.Fprintln(w, "恭喜!登录成功")
return
}
//return result
}
~~~
~~~
func registerPost(w http.ResponseWriter, r *http.Request) {
IsSessionAdminLogin(w, r) //#############这里明显调用和 如果session不存在 直接return结束了,为什么这里还执行了下面的新增代码呢
r.ParseForm()
if r.Method == "POST" {
user := r.Form.Get("user")
pass := r.Form.Get("pass")
age := r.Form.Get("age")
inn, err := mysql.DB.Prepare("insert into user_list set user=?,pass=?,age=?")
defer inn.Close()
if err != nil {
fmt.Fprintln(w, err)
return
}
getResult, err2 := inn.Exec(user, pass, age)
if err2 != nil {
fmt.Fprintln(w, err2)
return
}
getfanhui, err3 := getResult.LastInsertId()
if err3 != nil {
fmt.Fprintln(w, err3)
return
}
if getfanhui > 0 {
fmt.Fprintln(w, "OKOKOK......")
//fmt.Fprintln(w, getfanhui)
}
}
}
~~~
#7
更多评论
<a href="/user/channel" title="@channel">@channel</a>
楼主代码应该是想打印确认是否已经登录了,没有返回值没有问题
我今天也遇到这个问题了,看看有没有高手出来指点一下
#2