zoukankan      html  css  js  c++  java
  • Golang ECHOhtml处理session【8】

    如果处理用户登录会话,需要相关的session处理机制,echo框架的session处理是通过中间件实现的。
    使用session的关键步骤:

    1. 导入依赖包
    2. 设置session中间件
    3. 读写session数据

    1.导入依赖包

    导入包之前先安装依赖包

    go get github.com/gorilla/sessions
    go get github.com/labstack/echo-contrib/session
    

    导入包:

    import (
      "github.com/gorilla/sessions"
      "github.com/labstack/echo-contrib/session"
    )
    

    2.设置session中间件

    //初始化echo实例
    e := echo.New()
    
    //设置session数据保存目录
    sessionPath := "./session_data"
    
    //设置cookie加密秘钥, 随意设置
    sessionKey = "Onxuh20a2ihhh2"
    
    //设置session中间件
    //这里使用的session中间件,session数据保存在指定的目录
    e.Use(session.Middleware(sessions.NewFilesystemStore(sessionPath, []byte(sessionKey))))
    

    3.读写session数据

    以网站用户登录为例,如何保存会话数据和读取会话数据。

    3.1.用户登录并记录会话数据的例子

    这里忽略html登录页面部分,直接描述控制器代码大概怎么写。

    e.POST("/login", func(c echo.Context) error {
        //获取登录请求参数
        username := c.FormValue("username")
        password := c.FormValue("password")
    	
    	//校验帐号密码是否正确	
        if username == "xjs" && password == "123" {
    		//密码正确, 下面开始注册用户会话数据
    		//以user_session作为会话名字,获取一个session对象
    		sess, _ := session.Get("user_session", c)
    		
    		//设置会话参数
    		sess.Options = &sessions.Options{
                Path:     "/",  //所有页面都可以访问会话数据
                MaxAge:   86400 * 7,   //会话有效期,单位秒
            }
            
            //记录会话数据, sess.Values 是map类型,可以记录多个会话数据
            sess.Values["id"] = username
            sess.Values["isLogin"] = true
            
            //保存用户会话数据
            sess.Save(c.Request(), c.Response())
            
    		return c.String(200, "登录成功!")
    	} else {
    		return c.String(200, "密码不正确!")
    	}
    })
    

    3.2.获取用户会话数据

    3.1.登录成功后,可以通过下面的方式读取用户会话数据

    e.POST("/home", func(c echo.Context) error {
        //以user_session作为会话名字,获取一个session对象
        //注意这里的session名字,必须跟登录注册的会话名字一致
    	sess, _ := session.Get("user_session", c)
    	
    	//通过sess.Values读取会话数据
    	username := sess.Values["id"]
    	isLogin  := sess.Values["isLogin"]
    	
    	//打印会话数据
    	fmt.Println(username)
    	fmt.Println(isLogin)
    })
    
  • 相关阅读:
    树链剖分学习笔记(未完)
    VI 配置文件(略全)
    linux之awk
    指针之基础篇
    linux之sed
    sqlplus命令手册
    Leetcode复习: 堆和栈
    leetcode 的shell部分4道题整理
    Regular Expression Matching [leetcode]
    深入浅出JAVA
  • 原文地址:https://www.cnblogs.com/remixnameless/p/14318227.html
Copyright © 2011-2022 走看看