Versions Compared
compared with
Key
- This line was added.
- This line was removed.
- Formatting was changed.
基本介绍
接口文档:https://godocpkg.go.orgdev/github.com/gogf/gf/v2/net/ghttp#Cookie
常用方法:
Code Block | ||
---|---|---|
| ||
type Cookie func GetCookie(r *Request) *Cookie func (c *Cookie) Contains(key string) bool func (c *Cookie) Flush() func (c *Cookie) Get(key string, def ...string) string func (c *Cookie) GetSessionId() string func (c *Cookie) Map() map[string]string func (c *Cookie |
) |
|
Remove(key string) func (c *Cookie) RemoveCookie(key, domain, path string) func (c *Cookie) Set(key, value string) func (c *Cookie) SetCookie(key, value, domain, path string, maxAge time.Duration, httpOnly ...bool) func (c *Cookie) SetHttpCookie(httpCookie *http.Cookie) func (c *Cookie) SetSessionId(id string) |
任何时候都可以通过*ghttp.Request
对象获取到当前请求对应的Cookie
对象,因为Cookie
和Session
都是和请求会话相关,因此都属于ghttp.Request
的成员对象,并对外公开。Cookie
对象不需要手动Close
,请求流程结束后,HTTP Server
会自动关闭掉。
此外,Cookie
中封装了两个SessionId
相关的方法:
Cookie.GetSessionId()
用于获取当前请求提交的SessionId,每个请求的SessionId都是唯一的,并且伴随整个请求流程,该值可能为空。用于获取当前请求提交的SessionId
,每个请求的SessionId
都是唯一的,并且伴随整个请求流程,该值可能为空。Cookie.SetSessionId(id string)
用于自定义设置SessionId到Cookie中,返回给客户端(往往是浏览器)存储,随后客户端每一次请求在Cookie中可带上该SessionId。
- 用于自定义设置
SessionId
到Cookie
中,返回给客户端(往往是浏览器)存储,随后客户端每一次请求在Cookie
中可带上该SessionId
。
在设置Cookie
变量的时候可以给定过期时间,该时间为可选参数,默认的Cookie
过期时间为一年。
Tip |
---|
默认的 |
使用示例
Code Block | ||
---|---|---|
| ||
package main import ( "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/os/gtime" "github.com/gogf/gf/v2/net/ghttp" ) func main() { s := g.Server() s.BindHandler("/cookie", func(r *ghttp.Request) { datetime := r.Cookie.Get("datetime") r.Cookie.Set("datetime", gtime.Datetime()) r.Response.Write("datetime:", datetime) }) s.SetPort(8199) s.Run() } |
执行外层的main.go
,可以尝试刷新页面 http://127.0.0.1:8199/cookie ,显示的时间在一直变化。
对于控制器对象而言,从基类控制器中继承了很多会话相关的对象指针,可以看做alias,可以直接使用,他们都是指向的同一个对象:
Code Block | ||
---|---|---|
| ||
type Controller struct {
Request *ghttp.Request // 请求数据对象
Response *ghttp.Response // 返回数据对象(r.Response)
Server *ghttp.Server // WebServer对象(r.Server)
Cookie *ghttp.Cookie // COOKIE操作对象(r.Cookie)
Session *ghttp.Session // SESSION操作对象
View *View // 视图对象
} |
由于对于Web开发者来讲,Cookie
都已经是非常熟悉的组件了,相关API也非常简单,这里便不再赘述。Cookie
都已经是非常熟悉的组件了,相关API
也非常简单,这里便不再赘述。
Cookie
会话过期
Cookie
的有效期默认是1年,如果我们期望Cookie随着用户的浏览会话过期,像这样:
Image Added
那么我们仅需要通过SetCookie
来设置Cookie
键值对并将maxAge
参数设置为0
即可。像这样:
Code Block | ||
---|---|---|
| ||
r.Cookie.SetCookie("MyCookieKey", "MyCookieValue", "", "/", 0) |
Panel | ||
---|---|---|
| ||
|