iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 22
1
Modern Web

Iris這個在go語言上地表最快的網頁框架系列 第 22

iris的cookie

cookie

前一篇介紹了傳遞使用者資料手段之一session,這一篇再接續介紹另一個是傳遞使用者資料的另一個手段,這裡不多講cookie的細部知識,有興趣的可以看一下Cookie Wiki,本篇著重於在 iris 如何使用 cookie 所以接下來進入本文內容。

本文同步放置於此

iris的cookie

這裡主要是說明在 iris 內如何存取 cookie,所以以下分三個部份來跟大家介紹 iris 的 cookie,那三個部份分別是如何設定 cookie、如何取得cookie和如何將cookie加解密,首先先介紹如何設定cookie開始。

iris cookie的設定

iris 的設定有兩種方式,一種是SetCookie例外一種是UpsertCookie相信有些開發基礎的讀者們看到這兩個方法名稱就知道其差別是甚麼了,第一個SetCookie僅是設定cookieUpsertCookie則是若是cookie存在實則為將其值更新為設定的值,若不存在則新增。

但是除了上述兩個方法之外還有一個常用的方法SetCookieKV,這個方法跟前面幾個方法的差別是甚麼呢,主要是透過KeyValue的方式來修改cookie內對應Key的ˋ值。他的使用方法如下列例子

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

這邊有地方要注意的是,沒有特別設定的存續期間是365天,如果要更改存續期間則在options用以下方法設定

iris.CookieExpires(durFromNow time.Duration) CookieOption

iris cookie的取得

相對於cookie的設定,他的取得相對簡單,請看下列例子

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

iris cookie的刪除

有時會有需要將特定的cookie給刪除的狀況,這時候就要使用下列的方式來進行刪除的動作

RemoveCookie(name string, options ...CookieOption)

iris cookie的加解密

在處理完新增、刪除與修改cookie後,接下來要補充的是針對cookie加解密,因為有時候存放一些不希望讓使用者知道的資料,所以要針對他做加密,所以加解密的方法如下

var (
		hashKey  = securecookie.GenerateRandomKey(64)
		blockKey = securecookie.GenerateRandomKey(32)

		s = securecookie.New(hashKey, blockKey)
	)

上述例子是先生成一組加密用密鑰s,接下來就透過下列方法進行加密

// iris.CookieEncode(encode CookieEncoder) CookieOption

ctx.SetCookieKV(name, value, iris.CookieEncode(s))

然而解密的方法就如下所示

// iris.CookieDecode(decode CookieDecoder) CookieOption

ctx.GetCookie(name, iris.CookieDecode(s))

結論

本篇介紹傳遞使用者資訊的手段之一的cookie,其中包含他的存取以及刪除還有對他加解密。


上一篇
iris的session
下一篇
iris的 query string
系列文
Iris這個在go語言上地表最快的網頁框架30

尚未有邦友留言

立即登入留言