cookie 值为什么不一样?

weir2008 发布于 2015/04/21 15:25
阅读 2K+
收藏 0
@ResponseBody
	@RequestMapping("/logout")
	public Json logout(HttpSession session,HttpServletRequest request,HttpServletResponse response) {
		Json j = new Json();
		if (session != null) {
//			session.invalidate();
			session.removeAttribute("U");
		}
		Cookie[] cookies = request.getCookies();
        if (cookies != null) {
            for (Cookie cookie : cookies) {
                if ("userCookie".equals(cookie.getName())) {
                    cookie.setValue("");
                    cookie.setMaxAge(0);
                    response.addCookie(cookie);
                }
            }
        }
		j.setSuccess(true);
		j.setMsg("注销成功!");
		return j;
	}



这是注销了之后的cookie 没有value了

再看下面的拦截程序:

public class PermissionInterceptor implements HandlerInterceptor {


@Override
	public boolean preHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler) throws Exception {
		String requestUri = request.getRequestURI();
		String contextPath = request.getContextPath();
		String url = requestUri.substring(contextPath.length());
		if (excludeUrls.contains(url)) {
			return true;
		}
		HttpSession session = request.getSession();
		User u = (User) session.getAttribute("U");
		if (null==u) {
			Cookie[] cookies = request.getCookies();
			if (cookies!=null && cookies.length>0) {
				for (Cookie cookie : cookies) {
					if ("userCookie".equals(cookie.getName())) {
						String name = cookie.getValue();
						if (BaseUtil.isEmpty(name)) {
							String[] ss = name.split(",");
							if (userService.exsit("name", ss[0].trim(), "pwd", ss[1].trim())) {
								u = userService.findEntity("name", ss[0].trim(), "pwd", ss[1].trim());
								session.setAttribute("U", u);
								break;
							}
						}
					}
				}
			}
		}


}


Cookie[] cookies = request.getCookies();
这里获取到的cookie,截图为:


我有点不明白 ,还是我太菜鸟了。

为什么两个cookie 不一样,请指导?????





加载中
0
hibegin
hibegin
setMaxAge 这里通知浏览器。把这cookie 移除了。后面的你有生成的吧
0
weir2008
weir2008

引用来自“wzfz”的评论

setMaxAge 这里通知浏览器。把这cookie 移除了。后面的你有生成的吧
没有 注销之后,直接又调用了 拦截器,然后拦截子里面就看到了这样的结果,我不明白
0
hibegin
hibegin
我看可以下 你新生成的 cookie maxAge 为 -1 这意味你服务端控制的把。
0
5ycode
5ycode
第一次是通过response把浏览器的cookie给删除了,但你还没有到浏览器啊,你直接调用了拦截器,那不就还是原来的request请求啊,获取到cookie很正常。你可以返回浏览器再调用这个拦截器再看看情况
0
weir2008
weir2008

到目前还是没人知道我写的有什么问题,我已经发现问题所在了 是代码问题。

spring mvc +cookie+拦截器功能 实现系统自动登陆

http://www.loveweir.com/posts/view/31

看看便知。

返回顶部
顶部