Go操纵Session
  Eo7GKm3ms3Sh 2023年11月02日 49 0


创作不易感谢支持。
一条主写Go和PHP的小菜鸟。平常有时间喜欢自己写点东西,如有不对的地方,欢迎大佬指点。  

如果你使用的是框架,在框架中很好的支持了session的实现。

但如果你没有使用框架,使用的Go原生,那么是不支持Session的实现的。

在 Go 的标准库中并没有提供对 Sessoin 的实现。可以自己实现创建管理器存到内存、数据库或者文件当中。当然前提你会写或者有时间去写。小编自己去github上找了一个别人写好的包,拿来直接用

安装

在自己的项目中,执行以下命令安装go-session包

go get github.com/kataras/go-sessions/v3

实现

package main

import (
   "fmt"
   "github.com/kataras/go-sessions/v3"
   "net/http"
   "time"
)

func main()  {

   sess := sessions.New(sessions.Config{
      Cookie:                      "mysessionid",
      Expires:                     time.Hour * 2,
      DisableSubdomainPersistence: false,
   })

   http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
      w.Write([]byte(fmt.Sprintf("You should navigate to the /set, /get, /delete, /clear,/destroy instead")))
   })

   // 设置session
   http.HandleFunc("/set", func(w http.ResponseWriter, r *http.Request) {
      s := sess.Start(w, r)
      s.Set("name", "admin")

      w.Write([]byte(fmt.Sprintf("All ok session setted to: %s", s.GetString("name"))))
   })

   // 获取session
   http.HandleFunc("/get", func(w http.ResponseWriter, r *http.Request) {
      s := sess.Start(w, r)
      name := s.GetString("name")
      w.Write([]byte(fmt.Sprintf("The name on the /set was: %s", name)))
   })

   // 删除session
   http.HandleFunc("/del", func(w http.ResponseWriter, r *http.Request) {
      sess.Start(w, r).Delete("name")
   })

   // 清除session
   http.HandleFunc("/clear", func(w http.ResponseWriter, r *http.Request) {
      sess.Start(w, r).Clear()
   })

   // 刷新session的过期时间
   http.HandleFunc("/update", func(w http.ResponseWriter, r *http.Request) {
      sess.ShiftExpiration(w, r)如果你使用的是框架,在框架中很好的支持了session的实现。

但如果你没有使用框架,使用的Go原生,那么是不支持Session的实现的。

在 Go 的标准库中并没有提供对 Sessoin 的实现。可以自己实现创建管理器存到内存、数据库或者文件当中。当然前提你会写或者有时间去写。小编自己去github上找了一个别人写好的包,拿来直接用

安装

在自己的项目中,执行以下命令安装go-session包

go get github.com/kataras/go-sessions/v3

实现

package main

import (
   "fmt"
   "github.com/kataras/go-sessions/v3"
   "net/http"
   "time"
)

func main()  {

   sess := sessions.New(sessions.Config{
      Cookie:                      "mysessionid",
      Expires:                     time.Hour * 2,
      DisableSubdomainPersistence: false,
   })

   http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
      w.Write([]byte(fmt.Sprintf("You should navigate to the /set, /get, /delete, /clear,/destroy instead")))
   })

   // 设置session
   http.HandleFunc("/set", func(w http.ResponseWriter, r *http.Request) {
      s := sess.Start(w, r)
      s.Set("name", "admin")

      w.Write([]byte(fmt.Sprintf("All ok session setted to: %s", s.GetString("name"))))
   })

   // 获取session
   http.HandleFunc("/get", func(w http.ResponseWriter, r *http.Request) {
      s := sess.Start(w, r)
      name := s.GetString("name")
      w.Write([]byte(fmt.Sprintf("The name on the /set was: %s", name)))
   })

   // 删除session
   http.HandleFunc("/del", func(w http.ResponseWriter, r *http.Request) {
      sess.Start(w, r).Delete("name")
   })

   // 清除session
   http.HandleFunc("/clear", func(w http.ResponseWriter, r *http.Request) {
      sess.Start(w, r).Clear()
   })

   // 刷新session的过期时间
   http.HandleFunc("/update", func(w http.ResponseWriter, r *http.Request) {
      sess.ShiftExpiration(w, r)
   })

   // 销毁session和cookie
   http.HandleFunc("/destroy", func(w http.ResponseWriter, r *http.Request) {
      sess.Destroy(w, r)
   })

   http.ListenAndServe(":8081", nil)

}


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: Go操作redis 下一篇: Go - 方法
  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

Eo7GKm3ms3Sh
最新推荐 更多

2024-05-03