我不想每次创建会话时都重复此代码:
var shash, _ = bcrypt.GenerateFromPassword([]byte(os.Getenv("SESSION_KEY")), bcrypt.DefaultCost)
var store = sessions.NewCookieStore(shash)
session, serr := store.Get(r, "session-name")
if serr != nil {
....
}
因此,我在软件包inc/inc.go
中的文件inc
中创建了一个函数:
func initSession(r *http.Request){
var shash, _ = bcrypt.GenerateFromPassword([]byte(os.Getenv("SESSION_KEY")), bcrypt.DefaultCost)
var store = sessions.NewCookieStore(shash)
session, serr := store.Get(r, "session-name")
if serr != nil {
log.Fatal(serr)
return
}
}
函数initSession
初始化会话对象。
文件inc.go
中也有全局变量,例如:
var DbName string = "dbname"
var DbUser string = "user"
var DbPass string = "pass"
var DbHost string ="localhost"
这样我就可以从导入包inc
的任何文件中访问这些变量。
我的问题是,我不像其他变量一样不知道如何在函数initSession中使session
成为全局变量?这样我就可以使用inc.Session
来访问它了?
此外,考虑到我使用的是软件包var Session type
,我该如何用github.com/gorilla/sessions
声明变量,我应该用type
替换什么?