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 里面注册需要保存的这些结构体,不然会引起应用重启之后出现无法解析的错误

beego——session控制的更多相关文章

  1. Beego 学习笔记14:Session控制

    Session控制 1>     Session常用来作为全局变量使用,比如记录当前登录的用户,或者页面之间传递数据使用. 2>     Beego框架内置了 session 模块,目前 ...

  2. session 控制

    session 控制 beego 内置了 session 模块,目前 session 模块支持的后端引擎包括 memory.cookie.file.mysql.redis.couchbase.memc ...

  3. beego——session模块

    session介绍 session是一个独立的模块,即你可以那这个模块应用于其它Go程序中. session模块是用来存储客户端用户,session目前只支持cookie方式的请求,如果客户端不支持c ...

  4. [Java][Spring][scurity]同步session控制,防止一个用户多次登录

    [Spring][scurity]同步session控制.防止一个用户多次登录 假设你希望限制单个用户仅仅能登录到你的程序一次,Spring Security通过加入以下简单的部分支持这个功能. 1. ...

  5. 如何通过session控制单点登录

    web服务器为每一个浏览器实例对应一个session.这个session有自己的一个独立id,这个id保存在浏览器的cookie中(这个cookie貌似随着这个浏览器实例的关闭而清除),访问web服务 ...

  6. session 控制单点登录

    在我登录成功之后,我会 session.setAttribute("user", userMap);//设置session 所以就写了一个监听器来控制登录的. package or ...

  7. 利用缓存实现APP端与服务器接口交互的Session控制

    与传统B/S模式的Web系统不同,移动端APP与服务器之间的接口交互一般是C/S模式,这种情况下如果涉及到用户登录的话,就不能像Web系统那样依赖于Web容器来管理Session了,因为APP每发一次 ...

  8. 创建Cookie,简单模拟登录,记录登录名,购物车记录先前添加内容,session控制登录

     工作任务:模拟淘宝登录和购物车功能:使用cookie记录登录名,下次登录时能够记得上次的登录名,使用cookie模拟购物车功能,使用session记住登录信息并验证是否登录,防止利用url打开网站, ...

  9. session控制登入权限

    <?php session_start(); if(empty($_SESSION["uid"]))//判断SESSION是不是为空 { header("locat ...

随机推荐

  1. 如何移植.NET Framework项目至.NET Core?

    公司的项目一直采用.NET框架来开发Web项目.目前基础类库均为.NET Framework 4.6.2版本.Caching, Logging,DependencyInjection,Configur ...

  2. 换个角度剖析iptables防火墙

    这篇文章会尽量以通俗易懂的方式描述iptables的相关概念,请耐心的读完它. 防火墙相关概念 此处先描述一些相关概念. 从逻辑上讲.防火墙可以大体分为主机防火墙和网络防火墙. 主机防火墙:针对于单个 ...

  3. 重写(Override)

    重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为. 也就是说子类 ...

  4. 【vijos】1881 闪烁的繁星(线段树+特殊的技巧)

    https://vijos.org/p/1881 这场比赛太难了sad.所以我都没做.. 这题一开始我竟然不会sad(本来就不会),然后我继续yy..yy了好久,竟然yy了个什么可拆分的并查集?(sa ...

  5. 【ARDUINO】HC-05蓝牙不配对问题

    除了刷主从之外,不配对的原因有1:已经配对其他设备,需用AT+RMAAD来移除.2.默认为蓝牙由绑定指令设置,需改为任意地址连接模式AT+CMODE=1 //#define AT 2 #define ...

  6. centos php 版本升级 至5.3 wordpress3.7

    今天换了主机,wordpress居然出现下面的错误: 您的服务器现在运行的PHP版本为5.1.6,但WordPress 3.7要求的最低版本为5.2.4. http://www.webtatic.co ...

  7. apache 一个站点配置多个域名

      <VirtualHost *:80> ServerAdmin i@kuigg.com DocumentRoot /www/kuigg.com ServerName kuigg.com ...

  8. C++ 运算符 [] & *、操作符new 修饰符const inline virtual

    1. [] 这让我想到静态分配内存和动态分配内存,与数据名称无关 局部变量和临时变量会储存在静态缓存区,随着程序运行完而消亡(例如在循环体中定义的局部变量随着循环体结束,局部变量也会消亡). 内存泄漏 ...

  9. MVC [Control与View交互]

    <1> Home控制器 using System; using System.Collections.Generic; using System.Data; using System.Da ...

  10. 搭建一个简单的基于web的网络流量监控可视化系统

    本文转载于我的个人博客,转载请标明出处. 初衷 在腾讯云的学生认证申请提交上去n天之后,终于得到了审批,所以迫不及待的想玩玩腾讯云,作为一个搞网络的,自然有一些关于网络应用的小玩意,所以把以前部署过的 ...