• beego——session控制


    beego内置了session模块,目前session模块支持的后端引擎包括memory、cookie、file、mysql、redis、couchbase、memcache、postgres,

    用户也可以根据相应的interface实现自己的引擎。

    beego中使用相当方便,只要在main入口函数中设置如下:

    beego.BConfig.WebConfig.Session.SessionOn = true
    

    或者通过配置文件配置如下:

    sessionon = true
    

      

    beego中通过如下方式操作session。

    func (this *MainController) Get() {
        v := this.GetSession("asta")
        if v == nil {
            this.SetSession("asta", int(1))
            this.Data["num"] = 0
        } else {
            this.SetSession("asta", v.(int)+1)
            this.Data["num"] = v.(int)
        }
        this.TplName = "index.tpl"
    }
    

    session有几个方便的方法:

    • SetSession(name string, value interface{})   设置session的值
    • GetSession(name string) interface{}  获取session的值
    • DelSession(name string)  删除
    • SessionRegenerateID()
    • DestroySession()

    session操作主要有设置session、获取session、删除session。

    当然你可以通过下面的方式控制这些逻辑:

    sess:=this.StartSession()
    defer sess.SessionRelease()
    

    sessi对象具有如下方法:

    sess.Set()
    sess.Get()
    sess.Delete()
    sess.SessionID()
    sess.Flush()

    但是建议使用SetSession、GetSession、DelSession三个方法来操作,避免自己在操作的过程中资源没释放的问题。

    关于Session模块使用中的一些参数设置:

    (1)beego.BConfig.WebConfig.Session.SessionOn

      设置是否开启Session,默认是false,配置文件对应的参数名:sessionon

    (2)beego.BConfig.WebConfig.Session.SessionProvider

      设置Session的引擎(session存储方式),默认是memory,目前支持还有file、mysql、redis等,配置文件对应的参数名:sessionprovider

    (3)beego.BConfig.WebConfig.Session.SessionName

      设置cookies的名字,Session默认是保存在用户浏览器cookies里面的,默认名是beegosessionID,配置文件对应的参数名是:sessionname

    (4)beego.BConfig.WebConfig.Session.SessionGCMaxLifetime

      设置Session过期时间,默认值是3600秒,配置文件对应的参数:sessiongcmaxlifetime

    (5)beego.BConfig.WebConfig.Session.SessionProviderConfig

      设置对应file、mysql、redis引擎的保存路径或者链接地址,默认值是空,配置文件对应参数:sessionproviderconfig

    (6)beego.BConfig.WebConfig.Session.SessionHashFunc

      默认值为sha1,采用sha1加密算法生产sessionid

    (7)beego.BConfig.WebConfig.Session.SessionHashKey

      默认的key是beegoserversessionkey,建议用户使用的时候修改该参数。

    (8)beego.BConfig.WebConfig.Session.SessionCookieLifeTime

      设置cookie的过期时间,cookie是用来存储保存在客户端的数据。

    从beego1.1.3版本开始移除了第三方依赖库。也就是如果你想使用mysql、redis、couchbase、memcache、postgres这些引擎,那么你首先需要安装。

    go get -u github.com/astaxie/beego/session/mysql

    然后在你的main函数中引入该库,和数据库的驱动引入是一样的:

    import _ "github.com/astaxie/beego/session/mysql"
    

      

    当SessionProvider为file SessionProviderConfig是指保存文件的目录,如下所示:

    beego.BConfig.WebConfig.Session.SessionProvider="file"
    beego.BConfig.WebConfig.Session.SessionProviderConfig = "./tmp"

    当SessionProvider为mysql时,SessionProviderConfig是链接地址,采用go-sql-driver,如下所示:

    beego.BConfig.WebConfig.Session.SessionProvider = "mysql"
    beego.BConfig.WebConfig.Session.SessionProviderConfig = "username:password@protocol(address)/dbname?param=value"

    需要特别注意的是,在使用 mysql 存储 session 信息的时候,需要事先在 mysql 创建表,建表语句如下:

        CREATE TABLE `session` (
            `session_key` char(64) NOT NULL,
            `session_data` blob,
            `session_expiry` int(11) unsigned NOT NULL,
            PRIMARY KEY (`session_key`)
        ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

    当 SessionProvider 为 redis 时,SessionProviderConfig 是 redis 的链接地址,采用了 redigo,如下所示:

    beego.BConfig.WebConfig.Session.SessionProvider = "redis"
    beego.BConfig.WebConfig.Session.SessionProviderConfig = "127.0.0.1:6379"
    

      

    当 SessionProvider 为 memcache 时,SessionProviderConfig 是 memcache 的链接地址,采用了 memcache,如下所示:

    beego.BConfig.WebConfig.Session.SessionProvider = "memcache"
    beego.BConfig.WebConfig.Session.SessionProviderConfig = "127.0.0.1:7080"

    当 SessionProvider 为 postgres 时,SessionProviderConfig 是 postgres 的链接地址,采用了 postgres,如下所示:

    beego.BConfig.WebConfig.Session.SessionProvider = "postgresql"
    beego.BConfig.WebConfig.Session.SessionProviderConfig = "postgres://pqgotest:password@localhost/pqgotest?sslmode=verify-full"

    当 SessionProvider 为 couchbase 时,SessionProviderConfig 是 couchbase 的链接地址,采用了 couchbase,如下所示:

    beego.BConfig.WebConfig.Session.SessionProvider = "couchbase"
    beego.BConfig.WebConfig.Session.SessionProviderConfig = "http://bucketname:bucketpass@myserver:8091"
    

     

    需要注意的是,因为 session 内部采用了 gob 来注册存储的对象,例如 struct,

    所以如果你采用了非 memory 的引擎,请自己在 main.go 的 init 里面注册需要保存的这些结构体,不然会引起应用重启之后出现无法解析的错误

  • 相关阅读:
    信息系统项目管理系列之十:项目人力资源管理
    信息系统项目管理系列之六:项目范围管理
    记大型商业软件<<国土档案管理信息系统>>之系统简介
    信息系统项目管理系列之九:项目质量管理
    ORACLE常见问题一千问(提供下载)(不怕学不成、就怕心不诚!)
    (推荐)(提供下载)ORACLE常见问题一千问(不怕学不成、就怕心不诚!)
    [推荐]ORACLE SQL:经典查询练手第四篇(不懂装懂,永世饭桶!)
    [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)
    [提供源码下载]在大型软件中用Word做报表:书签的应用(提供一种思路)
    (推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
  • 原文地址:https://www.cnblogs.com/yangmingxianshen/p/10122333.html
Copyright © 2020-2023  润新知