关于session的使用限制以及解决方案的说明
1. 背景说明
在OAuth认证过程以及OpenAPI调用过程中,多次会用到appid,appkey,access token等参数,需要把这些值存储起来。开发人员很容易想到用session来存储。 但是在正式网站运营环境中,我们并不建议使用session而是使用MySQL或者其他永久的存储来保存信息,以避免网站不止一台服务器的情况下,两次请求的sessoin信息可能不会保存在同一台服务器导致的访问出错等情况。
2. 使用session带来的问题
2.1 网站存在多个子域名的情况下如何共享session
默认情况下,子域名之间的session信息是不允许共享的。因此如果网站存在多个子域名,则有可能引发如下情况: 在登录过程用到了www.a.com,而在回调地址用到了www.i.a.com,由于session信息不能在两个子域名之间共享,导致用户访问回调地址出错。
2.2 同一个主域名不同服务器之间如何共享session
当网站服务器超过1台的时候,就出现了如何在不同服务器之间共享session信息的问题。
3. 解决方案
要解决如上问题,必须引入一个中间存储。数据库是一个非常合适的选择。