Выйти только в случае простоя
Я использую гориллы / сессий для обработки сессий. Ниже мой код для сессии:
var STORE = sessions.NewCookieStore([]byte("some_secret_text"))
session, err := STORE.Get(c.Request, "user")
if err != nil {
fmt.Println("Error: ",err)
}
if session.IsNew {
session.Options.MaxAge = 10 * 60
}
Я хочу выйти из системы только в том случае, если он простаивает в течение 10 минут. В настоящее время пользователь выходит из системы, даже если он работает.
2 ответа
У меня был хороший опыт использования https://github.com/alexedwards/scs для обработки сессий.
Он также включает настройку для простоя:
session.IdleTimeout(30*time.Minute)
Я не знаю, является ли переключение библиотеки сессий вариантом для вас, но scs интегрируется довольно легко, так что, возможно, стоит хотя бы взглянуть на это.:)
Вот пример кода, который я использую для этого:
func SessionHandler(ses sessions.Session, timeout int64) {
timeNow := time.Now().Unix()
if ses.Get("authenticated").(bool) {
switch ses.Get("timestamp").(type) {
case int64:
sessiontime := ses.Get("timestamp").(int64)
if sessiontime > 0 {
if timeNow > (sessiontime + timeout) {
ses.Clear()
ses.Save()
return
}
ses.Set("timestamp", timeNow)
ses.Save()
}
default:
ses.Set("timestamp", timeNow)
ses.Save()
}
}
}