参考链接:
http://stackoverflow.com/questions/10960131/authentication-authorization-and-session-management-in-traditional-web-apps-and
http://stackoverflow.com/questions/3804209/what-are-sessions-how-do-they-work
HTTP协议是无状态的,每一个请求是分离的同时执行在不同的上下文中。为了使一个请求和其他的请求相关联,需要在不同的HTTP请求中储存用户数据
session鉴别用户的逻辑是(鉴别用户不止这一种方式)
服务端发送一个标识符到客户端,客户端储存这个标识符,并在随后的请求中带上这个标识符以供服务端鉴别
cookie
在一个典型的浏览器-服务器例子中,浏览器为每个域名管理着一系列的 key value 键值对(cookie)
1.服务端可以使用 Set-Cookie HTTP response header 管理cookies
2.服务端可以通过cookie HTTP request header 存取 cookies
一些以web应用为目标的程序语言或者框架提供更高级的接口去处理cookies, 例如PHP 提供了 setcookie/$_COOKIE 去读和写 cookies
session
鉴别用户的时候,用户的数据存储在本地是可读可写,不安全。
此时可以把用户登录的相关信息存储在服务端的内存或者数据库中,然后给客户端一个“id”(可以存储在cookie或者别的地方),客户端每次请求的时候带上这个id,然后服务端通过这个id去鉴别用户,获取储存在session中的相关数据