它完全取决于您使用的存储后端.
该大猩猩/会话包内置了饼干和基于文件的存储.没有基于内存的商店,这与PHP大致相同$_SESSION.
我的建议:
我有Redis支持的商店(redistore)的第一手经验,这非常棒.如果您对这些商店有偏好,BoltDB(基于文件的密钥库)和Postgres商店也是可靠的.
我希望没有点击登录表单上的"记住我"按钮的用户在关闭浏览器后删除会话,而其他人都会有一个与之关联的cookie.那么Gorilla会话能够处理这两种情况,还是我应该在这种情况下使用其他东西?
请注意,所有实现都需要一个"cookie" - 它只是cookie是自包含存储,还是只包含一个引用后端存储中的行/值的标识符.
您可以通过设置设为"会话cookie"(即只持续只要标签/浏览器会话),session.Options.MaxAge = 0按大猩猩/会话文档的这一部分.
例如
func MyHandler(w http.ResponseWriter, r *http.Request) {
session, err := store.Get(r, "session-name")
if err != nil {
http.Error(w, err.Error(), 500)
return
}
// Add your logic to check the r.FormValue for your remember_me checkbox.
// Temporary session
session.Options.MaxAge = 0
// Set some session values.
session.Values["user"] = someUser
// Save it before we write to the response/return from the handler.
session.Save(r, w)
}
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
960 次 |
| 最近记录: |