Beego脱坑(六)——cookie和session

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yang731227/article/details/82263125

Cookie

1.Http是无状态的协议,服务器不能记录浏览器的访问状态,也就是服务器不能区分两次请求是否是来自同一个客户端。

2.Cookie实际上是服务器保存在浏览器上的一段信息,浏览器有了Cookie之后,每次向服务器发送请求都会带着该信息进行访问,服务器在收到请求之后,就可以通过该信息进行处理。

3.Cookie由服务器创建,并发给浏览器,最终由浏览器保存。

Cookie的用途

  1. 电商网站的购物车
  2. 保持用户登陆状态

设置Cookie

使用beego.Router()注册路由

beego.Router("/cookie",&controllers.CookieController{})

设置Cookie控制器以及Get方法

package controllers

import "github.com/astaxie/beego"

type CookieController struct {
	beego.Controller
}

func (this *CookieController)Get()  {
	if this.Ctx.GetCookie("user") ==""{  
		this.Ctx.SetCookie("user","admin")
		this.Ctx.WriteString("Cookie设置成功")
	}else{
		user:= this.Ctx.GetCookie("user")
		this.Ctx.WriteString("user="+user)
	}
}

我们先通过this.Ctx.GetCookie("key")判断浏览器是否有Cookie ,如果没有就使用this.Ctx.SetCookie("key","value")设置,如果有就获取并输出。

注意Cookie的键和值不能为中文

为Cookie设置存活时间

this.Ctx.SetCookie("user","admin",10)

SetCookie的第三个参数是时间,单位是秒 ,如果不设置时间,Cookie只在本次回话有效,默认存活时间为3600秒  

我Cookie设置路径 

this.Ctx.SetCookie("user","admin","100","/cookie")

 

Session

Session的使用

Beego默认关闭Session,如果想要使用Session,需要在配置文件或程序中设置,分别为

beego.BConfig.WebConfig.Session.SessionOn = true和sessionon=true

设置Session

设置session:this.SetSession(“usesrname”, “admin”)

删除Session

This.GetSession(“username”),如果没有获取到session,会返回nil,和cookie不一样,getCookie返回空字符串。

  1. Session是一段保存在服务器上的一段信息,当客户端第一次访问服务器时创建。同时也创建一个名为beegosessionID,值为创建Session的id的Cookie
  2. 这个beegosessionID对应服务器中的一个Session对象,通过它就可以获取到保存用户信息的Session

 

通过this.DelSession("password")和this.DestroySession()均可以删除Session,其区别在于DelSession删除指定的Session, DestroySession删除所有session。

可以通过beego.BConfig.WebConfig.Session.SessionName = "admin"和sessionname设置Cookie名称,如果在配置文件和主函数都设置了,主函数优先,因为beego先加载配置文件后执行主函数,所以主函数中设置的内容回对配置文件中设置的内容进行覆盖。

猜你喜欢

转载自blog.csdn.net/yang731227/article/details/82263125