Go言語でセッション保存した後、全ての画面でそれを参照したい
html/templateを使って、MVCのような形でシステムを作成中です。
golangでログイン機能を実装しています。
とりあえずセッションの保存に関しては、下記のような実装で出来ました。
import ( "net/http" "github.com/gorilla/sessions" "github.com/labstack/echo-contrib/session" "github.com/labstack/echo/v4" ) func Login(c echo.Context) error { sess, _ := session.Get("session", c) sess.Options = &sessions.Options{ Path: "/", MaxAge: 86400, HttpOnly: true, } sess.Values["foo"] = "bar" sess.Values["auth"] = true sess.Save(c.Request(), c.Response()) return c.String(http.StatusOK, "セッション保存成功") }
これで、セッション保存されてるか否かは、とある画面一つであれば下記のように確認ができるかと思います。
func LoginTest(c echo.Context) error { sess, err := session.Get("session", c) if err != nil { return c.String(http.StatusInternalServerError, "Error") } if b, _ := sess.Values["auth"]; b != true { return c.String(http.StatusUnauthorized, "401") } else { return c.String(http.StatusOK, sess.Values["foo"].(string)) } }
session.Get("session", c)で取れるので、それをテンプレートエンジンに渡すなりでなんとかなりそうなのですが、
例えばLaravel等はbladeにて、@auth とかのディレクティブでログインしてるか否かがわかるかと思います。
Goの場合はどのようにすれば良いでしょうか。
あなたの回答
tips
プレビュー