第一次登录,如果勾选了自动登录,会创建一个Cookie写到客户端(response.addCookie),否则不创建。
(Cookie的path和name决定了是否是相同cookie),并将信息写入session
第二次会话访问主页,被Filter拦截,判断你的Cookie是否有登录信息,有就拿出替你登录,信息写入session。没有则不做操作;
如果又执行登录时,没有点击自动登录,记得清除Cookie(maxage设置为0)。
注意:Filter的条件拦截,fileter 必须不对用户的登录操作拦截, filter必须不对session中有用户信息(已经登录的状态做拦截)。
这个Filter只是对用户登录操作时选择了自动登录了,所以在客户再次会话时,有Cookie信息第一次带来,替客户做了登录操作,接下来的用户浏览,它一概不做工作了。
注意一些概念问题
Cookie 是 客户端 访问 服务端 的钥匙 。 决定是否可以自动登录、、
Session 每次关闭浏览器,再次访问 , Jsessionid 就不相同了, 所以 在Filter中需要 帮你登录, 帮你写入session。
拦截的 性能 问题,只在客户端有Cookie , 不存在session(再次会话),且不能拦截登录操作(控制request.getRequestURI),否则,如果在登录状态下执行了两次登录,浪费资源.