通过 Context 的请求实例可以地访问Cookies。ctx.Request() 返回一个 net/http.Request 实例。

Iris 的 Context 提供了一个工具使得你可以更加容易地访问最常见的cookies用例,并且不需要任何你的自定义额外的代码,只需要使用 Request 的 cookie 方法就能满足。

设置cookie

SetCookie 方法添加一个cookie

SetCookie(cookie *http.Cookie, options ...CookieOption)

options 不是必需的,它们可以用来改变 cookie。稍后您将看到可用的选项,可以根据您的Web应用程序要求添加自定义选项,这也有助于避免在代码库中重复您的内容。

如果你也使用 SetCookieKV 方法,这个方法不需要导入 net/http 包。

SetCookieKV(name, value string, options ...CookieOption)

记住:通过 SetCookieKV 方法设置的cookie的默认有效期为365天。你可以使用 CookieExpires 这个cookie选项设置,或者使用 kataras/iris/Context.SetCookieKVExpiration 来全局设置。

CookieOption 这是一个 func(*http.Cookie) 类型的函数。

设置路径
CookiePath(path string) CookieOption
设置有效期
iris.CookieExpires(durFromNow time.Duration) CookieOption
HttpOnly
iris.CookieHTTPOnly(httpOnly bool) CookieOption
  • 对于 RemoveCookieSetCookieKV 来说 HttpOnly 字段默认为 true
编码

当添加cookie时提供了编码功能。

接受一个 CookieEncoder 并把cookie的值设置为编码后的值。

SetCookieSetCookieKV 会使用它。

iris.CookieEncode(encode CookieEncoder) CookieOption
解码

当获取cookie是提供了解码的功能。

接受一个 CookieDecoder ,在通过 GetCookie 返回cookie之前把cookie值解码。

GetCookie 时使用。

iris.CookieDecode(decode CookieDecoder) CookieOption

这里的 CookieEncoder 可以描述为:一个 CookieEncoder 编码cookie值。

  • 接受cookie 的名字作为第一个参数
  • 第二个参数为cookie的值的指针
  • 返回的第一个值为编码后的值,当编码操作失败是返回空
  • 第二个返回值为编码失败时的错误。
    CookieEncoder func(cookieName string, value interface{}) (string, error)

CookieDecoder 应该解码cookie值:

  • 第一个参数为Cookie的名字
  • 第二个参数是编码值,第三个参数是解码值的指针
  • 返回的第一个值为解码值,当发生错误返回空
  • 返回的第二个值为错误,当解码发生错误时返回不为空的错误
    CookieDecoder func(cookieName string, cookieValue string, v interface{}) error

异常不会被打印,因此你必须知道你所做的,记住:如果你使用 AES,它只支持键的大小为 16,24或者32bytes。

获取cookie

GetCookie 通过cookie的名字返回cookie值,没有找到则返回空。

GetCookie(name string, options ...CookieOption) string

如果你想要获得除了值之外更多的信息,使用下面的方法:

cookie, err := ctx.Request().Cookie("name")

获取所有的cookie

ctx.Request().Cookies() 方法返回所有可用的请求cookie的切片。有时你想要改变他们,或者为它们每个都执行一个操作,最简单的方法就是通过 VisitAllCookies 方法。

VisitAllCookies(visitor func(name string, value string))

移除一个Cookie

RemoveCookie 方法删除对应名字和路径为”/“的 cookie。

Tip:通过 iris.CookieCleanPath 选项改变cookie的路径,例如:RemoveCookie("nname", iris.CookieCleanPath)

另外,请注意,默认行为是将其HttpOnly设置为true。 它根据网络标准执行cookie的删除。

RemoveCookie(name string, options ...CookieOption)
文档更新时间: 2020-08-14 10:43   作者:kuteng