栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

34--go语言学习之session操作

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

34--go语言学习之session操作

  • 文档  GitHub - gin-contrib/sessions: Gin middleware for session management
  1.  下载
    go get github.com/gin-contrib/sessions
  2.  代码
    package main
    
    import (
    	"encoding/gob"
    	"net/http"
    
    	"github.com/gin-contrib/sessions"
    	"github.com/gin-contrib/sessions/cookie"
    	"github.com/gin-gonic/gin"
    )
    
    type LoginUser struct {
    	Id   string
    	Name string
    	Age  int
    }
    
    func main() {
    	// 注册LoginUser结构体,使其可以跨路由存取
    	gob.Register(LoginUser{})
    	engine := gin.Default()
    	// 添加session中间件
    	store := cookie.NewStore([]byte("secret"))
    	engine.Use(sessions.Sessions("mysession", store))
    	engine.GET("login", loginHandler)
    	engine.GET("info", infoHandler)
    	engine.Run(":9008")
    }
    
    // 获取用户信息
    func infoHandler(c *gin.Context) {
    	// 判断参数
    	name := c.Query("name")
    	if len(name) == 0 {
    		c.JSON(http.StatusBadRequest, "参数错误")
    		return
    	}
    	// 创建session
    	session := sessions.Default(c)
    	// 定义session的key
    	sessionKey := "session_" + name
    	// 获取session的value
    	sessionValue := session.Get(sessionKey)
    	// 判断value
    	if sessionValue != nil {
    		c.JSON(http.StatusOK, gin.H{"info": sessionValue})
    		c.String(http.StatusOK, session.Get("aabbcc").(string))
    	} else {
    		c.JSON(http.StatusOK, "登陆过期或未登录")
    	}
    	return
    }
    
    // 用户登陆
    func loginHandler(c *gin.Context) {
    	// 判断参数
    	name := c.Query("name")
    	if len(name) == 0 {
    		c.JSON(http.StatusBadRequest, "参数错误")
    		return
    	}
    	// 创建session
    	session := sessions.Default(c)
    	// 定义session的key
    	sessionKey := "session_" + name
    	// 获取session的value 并判断: sessionValue!=nil 则返回会话信息  sessionValue==nil 则创建并保存会话
    	sessionValue := session.Get(sessionKey)
    	if sessionValue != nil {
    		c.JSON(http.StatusOK, gin.H{"info": sessionValue, "msg": "重复登陆"})
    		return
    	}
    	// 创建loginUser并保存
    	loginUser := LoginUser{Id: "123", Name: name, Age: 30}
    	session.Set("aabbcc", "aabbcc123456") // 单独测试保存string类型
    	session.Set(sessionKey, loginUser)
    	// 设置session的参数
    	options := sessions.Options{}
    	options.Path = "/"
    	options.MaxAge = 10 // 有效期10秒
    	session.Options(options)
    	// 保存session
    	session.Save()
    	c.JSON(http.StatusOK, gin.H{"info": loginUser, "msg": "登陆成功"})
    	return
    }
    
  3.  测试
    1  获取用户信息  http://127.0.0.1:9008/info?name=admin
      
     2 用户登陆
      
     
    3 再次获取用户信息 
      
  4.  完成
     

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/310066.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号