本教材由知了传课辛苦制作而成,仅供学习使用,请勿用于商业用途!如进行转载请务必注明出处!谢谢!

session和cookie

一、什么是session?

  • Session是在_无状态_的HTTP协议下,服务端记录用户状态时用于标识具体用户的机制
  • 它是在服务端保存的用来跟踪用户的状态的数据结构,可以保存在文件、数据库或者集群中
  • 在浏览器关闭后这次的Session就消失了,下次打开就不再拥有这个Session。其实并不是Session消失了,而是Session ID变了,

二、什么是cookie?

  • Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息
  • 每次HTTP请求时,客户端都会发送相应的Cookie信息到服务端。它的过期时间可以任意设置,如果你不主动清除它,在很长一段时间里面都可以保留着,即便这之间你把电脑关机了。
  • 每次客户端发请求的时候会自动携带该域名下的Cookie,不用域名间的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)

  • 在过滤器中获取session

  • ctx.Input.Session(“user_name”)

  • 关于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。

1896人已阅读,今天你学习了吗?

添加新回复