Я не хочу повторять этот код каждый раз, когда хочу создать сеанс:
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
.
Моя проблема в том, что я не знаю, как сделать session
в функции initSession глобальной, как и другие переменные?чтобы я мог получить к нему доступ с помощью inc.Session
?
Кроме того, как мне объявить переменную с var Session type
, учитывая, что я использую пакет github.com/gorilla/sessions
, что я должен заменить type
на?