go语言web开发14 - beego框架里的Session使用

一、介绍

1.1、什么是Session

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

 

1.2、什么是Cookie

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

 

1.3、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

2.1、beego框架开启Session的两种方法(二选一即可)

(1)方法一:在main.go文件里 “beego.Run()” 上方添加如下配置开启

beego.BConfig.WebConfig.Session.SessionOn = true

 

(2)方法二:在配置文件 “conf/app.conf” 里添加如下配置开启

sessionon = true

 

2.2、Session使用示例

(1)设置Session

// 访问该Controller对应的路由的Get方法时
func (c *FormUploadController) Get() {
    // 设置了Session 
    c.SetSession("username","uxuan")
    // 返回模板页
    c.TplName = "form_upload.html"
}

 

(2)获取Session

// 访问当前Controller对应的get方法时
func (c *XsrfController) Get() {
    // 获取session
    username := c.GetSession("username")
    // 判断,如果没有session就跳到登陆页面
    if len(username) == 0 {
        c.Redirect("/login", 302)
    }
}

 

(3)删除Session

func (c *LogoutController) Get() {
    // 获取session
    username := c.GetSession("username")

    // 删除session
    c.DelSession("username")

}

 

posted @ 2020-09-19 14:59  欧-阳  阅读(913)  评论(0)    收藏  举报