cookie файлы иногда не добавляются
В чем может быть проблема? куки файлы иногда не ставится и не удаляются.
func Login(c *gin.Context) {
var input LoginInput
if err := c.ShouldBindJSON(&input); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
Username := input.Login
Password := input.Password
Fingerprint := input.Fingerprint
token, text, err := models.LoginCheck(Username, Password, Fingerprint)
if len(token) == 0 {
c.JSON(http.StatusBadRequest, text)
} else {
if err != nil {
c.JSON(http.StatusBadRequest, text)
return
}
at := token["accessToken"]
rt := token["refreshToken"]
c.SetCookie("refresh", rt, 10800, "/", "", false, false)
c.SetCookie("access", at, 900, "/", "", false, false)
c.JSON(http.StatusOK, text)
}
так ставлю куки
func Exit(c *gin.Context) {
c.SetCookie("refresh", "", -1, "/", "", false, false)
c.SetCookie("access", "", -1, "/", "", false, false)
database.DropSession()}
так их удаляю. Иногда происходит что при авторизации файлы куки не добавляюся или не удается это происходит 1 из 4 случаев данные вводится одни и теже. Использую фреймворк gin
Ответы (1 шт):
Судя по коду, функция Login устанавливает куки с именами "access" и "refresh" с разным временем жизни. Это может быть причиной того, что иногда куки не устанавливаются. Куки устанавливаются с помощью метода SetCookie в объекте c, который является указателем на объект типа gin.Context. В этом объекте хранится информация о текущем HTTP-запросе и ответе.
Существует несколько вариантов, почему куки могут не устанавливаться:
- Браузер может быть настроен таким образом, что он не принимает куки с указанным доменом.
- Браузер может быть настроен таким образом, что он не принимает куки с указанной директорией.
- Метод SetCookie может возвращать ошибку. В этом случае нужно посмотреть, какая ошибка возвращается
- Нужно посмотреть, какая ошибка возвращается, если SetCookie возвращает ошибку. Это может быть связано с тем, что указанный домен не существует, адрес не является абсолютным или путь указан неверно.
- Еще одна возможная причина неуспешной установки куки - это ошибка в методе LoginCheck. Этот метод возвращает три значения: токен, текст и ошибку. Если длина токена равна 0, то функция Login возвращает ошибку http.StatusBadRequest и текст, возвращенный методом LoginCheck. В этом случае нужно посмотреть, что возвращается в параметре text и понять, почему метод LoginCheck возвращает такой текст.
- Наконец, нужно проверить, что происходит с куки при вызове функции Exit. Проверить, что она успешно удаляет куки с именами "access" и "refresh".