Iris 這個在 go 語言上地表最快的網頁框架-iris的session

session

在上一篇文章介紹的 MVC 的配置與 viewtemplate 的撰寫以及綁定,接下來要介紹網頁應用程式在請求階段傳遞使用者資料的手段session

iris 的 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 middleware

上面例子用全域變數來存取session,不過有更有效率的方法,請大家看一下下列例子


import "github.com/kataras/iris/v12/sessions"

// func main
sess := sessions.New(sessions.Config{...})
app.Use(sess.Handler())

上面介紹如何註冊sessionmiddleware,接下來的例子要跟大家介紹如何使用session

session := sessions.Get(ctx)
// 在使用 session.Get、Set、Delete存取

上述例子取得session再透過前一段落的內容來存取session內的資料。

結論

本篇跟大家介紹存取session,除了這個之外還有另外一個傳遞使用者資訊的手段cookie在下一篇再跟大家介紹。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *