# 6 session和数据存储
Web开发中一个很重要的议题就是如何做好用户的整个浏览过程的控制,因为HTTP协议是无状态的,所以用户的每一次请求都是无状态的,我们不知道在整个Web操作过程中哪些连接与该用户有关,我们应该如何来解决这个问题呢?Web里面经典的解决方案是cookie和session,cookie机制是一种客户端机制,把用户数据保存在客户端,而session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构来保存信息,每一个网站访客都会被分配给一个唯一的标志符,即sessionID,它的存放形式无非两种:要么经过url传递,要么保存在客户端的cookies里.当然,你也可以将Session保存到数据库里,这样会更安全,但效率方面会有所下降。
6.1小节里面讲介绍session机制和cookie机制的关系和区别,6.2讲解Go语言如何来实现session,里面讲实现一个简易的session管理器,6.3小节讲解如何防止session被劫持的情况,如何有效的保护session。我们知道session其实可以存储在任何地方,6.3小节里面实现的session是存储在内存中的,但是如果我们的应用进一步扩展了,要实现应用的session共享,那么我们可以把session存储在数据库中(memcache或者redis),6.4小节将详细的讲解如何实现这些功能。
## 目录
![](images/navi6.png?raw=true)
## links
* [目录](<preface.md>)
* 上一章: [第五章总结](<05.7.md>)
* 下一节: [session和cookie](<06.1.md>)
- 目录
- Go环境配置
- Go安装
- GOPATH 与工作空间
- Go 命令
- Go开发工具
- 小结
- Go语言基础
- 你好,Go
- Go基础
- 流程和函数
- struct
- 面向对象
- interface
- 并发
- 小结
- Web基础
- web工作方式
- Go搭建一个简单的web服务
- Go如何使得web工作
- Go的http包详解
- 小结
- 表单
- 处理表单的输入
- 验证表单的输入
- 预防跨站脚本
- 防止多次递交表单
- 处理文件上传
- 小结
- 访问数据库
- database/sql接口
- 使用MySQL数据库
- 使用SQLite数据库
- 使用PostgreSQL数据库
- 使用beedb库进行ORM开发
- NOSQL数据库操作
- 小结
- session和数据存储
- session和cookie
- Go如何使用session
- session存储
- 预防session劫持
- 小结
- 文本文件处理
- XML处理
- JSON处理
- 正则处理
- 模板处理
- 文件操作
- 字符串处理
- 小结
- Web服务
- Socket编程
- WebSocket
- REST
- RPC
- 小结
- 安全与加密
- 预防CSRF攻击
- 确保输入过滤
- 避免XSS攻击
- 避免SQL注入
- 存储密码
- 加密和解密数据
- 小结
- 国际化和本地化
- 设置默认地区
- 本地化资源
- 国际化站点
- 小结
- 错误处理,调试和测试
- 错误处理
- 使用GDB调试
- Go怎么写测试用例
- 小结
- 部署与维护
- 应用日志
- 网站错误处理
- 应用部署
- 备份和恢复
- 小结
- 如何设计一个Web框架
- 项目规划
- 自定义路由器设计
- controller设计
- 日志和配置设计
- 实现博客的增删改
- 小结
- 扩展Web框架
- 静态文件支持
- Session支持
- 表单支持
- 用户认证
- 多语言支持
- pprof支持
- 小结
- 参考资料