## **什么是session?**
* Session是在***无状态***的HTTP协议下,服务端记录用户状态时用于标识具体用户的机制
* 它是在服务端保存的用来跟踪用户的状态的数据结构,可以保存在文件、数据库或者集群中
* 在浏览器关闭后这次的Session就消失了,下次打开就不再拥有这个Session。其实并不是Session消失了,而是Session ID变了,
## **什么是cookie?**
* Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息
* 每次HTTP请求时,客户端都会发送相应的Cookie信息到服务端。它的过期时间可以任意设置,如果你不主动清除它,在很长一段时间里面都可以保留着,即便这之间你把电脑关机了。
## **session和cookie:**
* Cookie 在客户端(浏览器),Session 在服务器端。
* Cookie的安全性一般,他人可通过分析存放在本地的Cookie并进行Cookie欺骗。在安全性第一的前提下,选择Session更优。重要交互信息比如权限等就要放在Session中,一般的信息记录放Cookie就好了。
* 单个Cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个Cookie。
* Session 可以放在 文件、数据库或内存中
* 用户验证这种场合一般会用 Session。因此,维持一个会话的核心就是客户端的唯一标识,即Session ID。
* Session 的运行依赖Session ID,而 Session ID 是存在 Cookie 中的,也就是说,如果浏览器禁用了 Cookie,Session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 Session ID)
## **beego中使用session:**
* #### 开启session
* main.go中开启:
* beego.BConfig.WebConfig.Session.SessionOn = true
* 配置文件中红开启:
* sessionon = true
* #### 使用session
* 设置session
* SetSession(name string, value interface{})
* this.SetSession("username", "zhiliao")
* 获取session
* GetSession(name string) interface{}
* this.GetSession("username")
* 删除session
* this.DelSession(name string)
* ***不建议***:操作sess对象,自己在操作的过程中可能会导致资源没释放的问题
* ~~~
sess:=this.StartSession()
defer sess.SessionRelease()
sess.Set()
sess.Get()
sess.Delete()
sess.SessionID()
sess.Flush()
~~~
* #### 关于session的一些其他配置
* **设置是否开启 Session**
* beego.BConfig.WebConfig.Session.SessionOn
* 默认为false
* **设置 Session 过期的时间**
* beego.BConfig.WebConfig.Session.SessionGCMaxLifetime
* 默认值是 3600 秒
* 设置 cookie 的过期时间
* beego.BConfig.WebConfig.Session.SessionCookieLifeTime
* 设置sessionid加密算法
* beego.BConfig.WebConfig.Session.SessionHashFunc
* 默认值为 sha1
* 修改sessionkey
* beego.BConfig.WebConfig.Session.SessionHashKey
* 默认的 key 是 beegoserversessionkey,建议在使用的时候修改该参数
* 设置 cookies 的名字
* beego.BConfig.WebConfig.Session.SessionName
* Session 默认是保存在用户的浏览器 cookies 里面的,默认名是 beegosessionID,配置文件对应的参数名是:sessionname。
示例:
- go环境搭建
- 解决go get网络慢的问题
- beego的安装
- bee的安装
- 编辑器
- go module
- 配置文件详解
- 配置文件其他说明
- 路由方法
- 路由
- 数据校验
- 校验函数
- 页面跳转
- 获取前端数据
- json文件的获取
- xsrf的用法
- xsrf的防护
- srfs和json的搭配
- flash的用法
- 过滤器
- url反转
- 各类数据的处理
- 模板函数
- 内置模板函数
- 自定义模板函数
- 模板
- 模板处理
- 模板渲染
- 视图文件的处理
- 静态文件
- 请求方式判断
- 验证码
- 另一种方法
- 分页类
- session
- 登录判断
- orm模块
- 使用方法
- mysql的安装
- 安装orm及驱动
- 建立模型
- 自定义模型
- 增删改查
- 高级查询
- 常见问题汇总
- 代码收藏
- 打包部署
- go build打包
- utils收藏
- 新goer容易犯的错
- 字符串操作