session和数据存储

如何做好用户的整个浏览过程的控制

1 .无状态的http协议,所以用户的每一次请求都是无状态的,我们其实无法知道整个web操作中哪些链接和该用户有关
2 .cookie:客户端机制,把用户数据保存在客户端
3 .session机制:把session存在服务端,每个访客都被分配一个唯一的标志。它可以通过url传递,也可以通过cookie传递

session和cookie的区别

1 .cookie:本地保存一下用户的历史记录,包括用户登陆的历史纪录。并在用户下一次访问站点的收将cookie通过http协议发送给服务器,完成验证,或者继续上一步操作
2 .会话式cookie,持久cookie

1 .如果不设置过期时间,则表示这个cookie的生命周期从创建到浏览器关闭为止,只要浏览器关闭。cookie就会消失
2 .如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie的有效期依然存在。存储在硬盘上的cookie可以在不同的浏览器进程间共享.比如两个ie窗口。上面的保存在内存中的cookie,不同浏览器有不同的处理方式
3 .设置cookie
expiration:=time.Now()
    expiration=expiration.AddDate(1,0,0)
    cookie:=http.Cookie{
                        Name:"golang",
                        Value:"7777",
                        Expires:expiration,
                    }
    http.SetCookie(w,&cookie)
4 .读取cookie
cookie,find:=r.Cookie("golang")
    fmt.Println(cookie)
    fmt.Println(find)
    // 获取单个cookie

    for _,cookie :=range r.Cookies(){
        fmt.Println(w,cookie.Name)
    }
    // 获取一堆cookie

5 .cookie是将所有信息都保存在本地。包括登陆信息等

session

1 .sesion是一种服务端机制,服务器使用一种类似于散列表的结构来保存信息
2 .当程序需要为某个客户端请求一条session的时候,服务器首先检查这个客户端的请求是否包含了一个session标识,如果有的话,证明之前创建过。如果没有的话,就创建并返回一个新的session,并生成一个sessionid,并在本次相应中返回给客户端保存
3 .session通过cookie保存sessionid

设置

1 .main.go的时候在init函数里面注册全局的session

globalSessions,_=session.NewManager("memory","gosessionid",3600)
    // 第一次是上面的写法,导致这个变成了私有变量,并不是全局变量。导致别的地方取不到
    
go globalSessions.GC()
//定期清除过期的session
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容