一:什么是session
session叫做会话,在http请求中来识别和不同客户端的一种状态,常用在web登录保存客户端状态使用.
二:http通信登录过程
客户端登录以后,服务端生成唯一session id,和相应的登录用户信息,把session id返回给客户端,客户端开启cookie的直接保存在cookie里面,没有cookie的可以携带在url中每次访问通过session id和服务端建立联系.
三:session的使用
(1)独立的服务器,session信息可以保存在系统文件中;
(2)多台服务器,session信息可以保存在redis或memcache中;
四: session的过期
session可以设置有效期,可以在特定时间内过期.注意php的session过期回收是按照gc回收机制,由于gc是按照几率启动的
所以不能保证session的过期后,真正被删除,所以php做好使用redis或memcache来保证;
五: 不同二级域名的session共享
以laravel为例,test1.lee.com 作为业务系统 test2.lee.com作为登录系统,
(1)
进入test1.lee.com 登录跳转test2.lee.com完成登录,跳转回test1.lee.com这时候 test1.lee.com下的cookie信息和test2的一样
配置test2.lee.com的session.php
SESSION_DOMAIN=.lee.com
这样在test2.lee.com下登录后cookie信息会共享到所有lee.com的二级域名下面;
(2)test2作为一个一个登录中心,登录完成跳转到test2发现cookie信息不是最新的,需要请求下test1的任一个页面,然后才能获取最新cookie,不知道什么原因,现在做的是test2登录成功,跳转到test1的测试页面,测试页面跳转到首页。