获取会话值 [英] Get session values
本文介绍了获取会话值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的Rails应用程序使用会话来存储授权的用户凭据。尝试登录并在Go代码中执行一些操作(需要用户会话)。我是否应该在登录时检索用户会话并传递到下一个请求?我该怎么处理呢?
推荐答案
Go的标准库不提供HTTP会话管理器。所以您必须自己写一份,或者使用别人写的一份。
一些示例:
- https://github.com/icza/session-包括Google App Engine支持(披露:我是作者)
- https://github.com/gorilla/sessions(Gorilla web toolkit的一部分)
通常通过服务器和客户端之间的cookie管理HTTP会话,因此可以直接从请求(http.Request
)获取会话(会话ID),例如使用Request.Cookie()
。
也就是说,没有必要通过"请求链""传递"会话,每个处理程序只需拥有http.Request
即可访问它。
例如使用github.com/icza/session
可以这样做:
func MyHandler(w http.ResponseWriter, r *http.Request) {
sess := session.Get(r)
if sess == nil {
// No session (yet)
} else {
// We have a session, use it
}
}
使用Gorilla sessions类似:
var store = sessions.NewCookieStore([]byte("something-very-secret"))
func MyHandler(w http.ResponseWriter, r *http.Request) {
session, err := store.Get(r, "session-name")
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
// Use session
}
这篇关于获取会话值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文