Как объявить переменную сеанса как глобальную в Голанге - PullRequest
0 голосов
/ 17 февраля 2019

Я не хочу повторять этот код каждый раз, когда хочу создать сеанс:

 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 на?

...