0%

cookie在单点登录中的作用

2018年4月9日 下午6:26

Localhost:8080 Localhost:9080 访问返回不同的额JSESSIONID


http://localhost:8080/manage/user/login.do?username=admin&password=admin

  1. 我们通过nginx代理随机访问127.0.0.1:8080和127.0.0.1:9080,这两个得到的JSESSIONID是一定不一样的
  2. 但是,先通过login.do访问tomcat(暂时称为login_tomcat)得到的JSESSIONID,这个JSESSION会成为mmall_login_token和redis中的key保存起来,用作用户验证。
  3. 及其特殊的情况,如果此时login_tomcat重启,此时login_tomcat就像一个新的tomcat一样,会返回新的JESSIONID。
  4. 但是,此时mmall_login_token依然还是login_tomcat未重启时的JSESSIONID。此时一共会有三个不同的SESSION值,在这个项目中
  5. 由于我们单独把管理登录的cookie保存在www.imooc.com下,它就像一个额外的安全空间一样,不受tomcat环境的影响。不管你是几个tomcat启动,tomcat是否重启,和我没关系。
  6. 这个道理和我们将用户登录信息保存在redis中一样,独立于tomcat,这样就是方便所有的tomcat使用。
  7. 如果我们不使用cookie,只是使用redis作为登录信息的保存,那么对于每次请求,tomcat都无法和redis中的登录信息session匹配,导致一直认为是新的请求无法正常登录
    1. 这没理解下来,cookie就想是钥匙,而redis就像是锁,他们两个得匹配。
    2. 只有锁,没有钥匙,这锁永远开不了。