reprogl

Форк
0
/
cookie.go 
63 строки · 1.3 Кб
1
package session
2

3
import (
4
	"net/http"
5
	"time"
6
)
7

8
type internalCookie struct {
9
	name, value, path string
10
	persist           bool
11
}
12

13
func WriteSessionCookie(w http.ResponseWriter, name, value, path string) {
14
	cookie := &internalCookie{
15
		name:  name,
16
		value: value,
17
		path:  path,
18
	}
19

20
	writeCookie(w, cookie, time.Now())
21
}
22

23
func WritePermanentCookie(w http.ResponseWriter, name, value, path string, expiry time.Time) {
24
	cookie := &internalCookie{
25
		name:    name,
26
		value:   value,
27
		path:    path,
28
		persist: true,
29
	}
30

31
	writeCookie(w, cookie, expiry)
32
}
33

34
// DeleteCookie note: Finally, to remove a cookie, the server returns a Set-Cookie header
35
// with an expiration date in the past. The server will be successful in removing the
36
// cookie only if the Path and the Domain attribute in the Set-Cookie header match the values
37
// used when the cookie was created.
38
//
39
// From: https://www.rfc-editor.org/rfc/rfc6265.html
40
func DeleteCookie(w http.ResponseWriter, name, path string) {
41
	cookie := &internalCookie{
42
		name: name,
43
		path: path,
44
	}
45

46
	writeCookie(w, cookie, time.Time{})
47
}
48

49
func (c *internalCookie) Name() string {
50
	return c.name
51
}
52

53
func (c *internalCookie) Path() string {
54
	return c.path
55
}
56

57
func (c *internalCookie) Value() string {
58
	return c.value
59
}
60

61
func (c *internalCookie) Persist() bool {
62
	return c.persist
63
}
64

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.