在上一篇文章介紹的 MVC 的配置與 view
的 template
的撰寫以及綁定,接下來要介紹網頁應用程式在請求階段傳遞使用者資料的手段session
。
本文同步放置於此
本篇要介紹 iris 的 session
要怎麼操作,接下來要介紹兩種session
應用的方法。
首先跟大家介紹全域變數 session
的操作,首先先看一下下列例子
package main
import (
"github.com/kataras/iris/v12"
"github.com/kataras/iris/v12/sessions"
)
var (
cookieNameForSessionID = "mycookiesessionnameid"
sess = sessions.New(sessions.Config{Cookie: cookieNameForSessionID})
)
上述例子是建立一個全域變數,接下來跟大家介紹如何使用這變數來存取session
func secret(ctx iris.Context) {
// Check if user is authenticated
if auth, _ := sess.Start(ctx).GetBoolean("authenticated"); !auth {
ctx.StatusCode(iris.StatusForbidden)
return
}
// Print secret message
ctx.WriteString("The cake is a lie!")
}
func login(ctx iris.Context) {
session := sess.Start(ctx)
// Authentication goes here
// ...
// Set user as authenticated
session.Set("authenticated", true)
}
func logout(ctx iris.Context) {
session := sess.Start(ctx)
// Revoke users authentication
session.Set("authenticated", false)
// Or to remove the variable:
session.Delete("authenticated")
// Or destroy the whole session:
session.Destroy()
}
上述例子來自於iris doc,主要是建立一個全域變數並透過.Start(ctx)
來取得session
並且透過.Set()
、.Delete()
與.Get[型別]()
來存取session
。
上面例子用全域變數來存取session
,不過有更有效率的方法,請大家看一下下列例子
import "github.com/kataras/iris/v12/sessions"
// func main
sess := sessions.New(sessions.Config{...})
app.Use(sess.Handler())
上面介紹如何註冊session
的middleware
,接下來的例子要跟大家介紹如何使用session
session := sessions.Get(ctx)
// 在使用 session.Get、Set、Delete存取
上述例子取得session
再透過前一段落的內容來存取session
內的資料。
本篇跟大家介紹存取session
,除了這個之外還有另外一個傳遞使用者資訊的手段cookie
在下一篇再跟大家介紹。