session & cookie
1.Http是无状态的协议,服务器不能记录浏览器的访问状态,也就是服务器不能区分两次请求是否是来自同一个客户端。
2.Cookie实际上是服务器保存在浏览器上的一段信息,浏览器有了Cookie之后,每次向服务器发送请求都会带着该信息进行访问,服务器在收到请求之后,就可以通过该信息进行处理。
3.Cookie由服务器创建,并发给浏览器,最终由浏览器保存。
Cookie的用途
- 电商网站的购物车
- 保持用户登陆状态
使用beego.Router()注册路由
beego.Router("/cookie",&controllers.CookieController{})
控制器
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的键和值不能为中文
this.Ctx.SetCookie("user","admin",10)
SetCookie的第三个参数是时间,单位是秒 ,如果不设置时间,Cookie只在本次会话有效,默认存活时间为3600秒
this.Ctx.SetCookie("user","admin","100","/cookie")
Session的使用
Beego默认关闭Session,如果想要使用Session,需要在配置文件或程序中设置,分别为
beego.BConfig.WebConfig.Session.SessionOn = true和sessionon=true
设置Session
this.SetSession(“usesrname”, “admin”)
删除Session
This.GetSession(“username”),如果没有获取到session,会返回nil,和cookie不一样,getCookie返回空字符串。
Session是一段保存在服务器上的一段信息,当客户端第一次访问服务器时创建。同时也创建一个名为beegosessionID,值为创建Session的id的Cookie
这个beegosessionID对应服务器中的一个Session对象,通过它就可以获取到保存用户信息的Session
通过this.DelSession(“password”)和this.DestroySession()均可以删除Session,其区别在于DelSession删除指定的Session, DestroySession删除所有session。
可以通过beego.BConfig.WebConfig.Session.SessionName = “admin”和sessionname设置Cookie名称,如果在配置文件和主函数都设置了,主函数优先,因为beego先加载配置文件后执行主函数,所以主函数中设置的内容回对配置文件中设置的内容进行覆盖。