关于shiro登录认证成功,却一直返回登录页面的问题

Shiro登录的时候,已经认证成功了

但一直未跳转到登录成功页面,最后找了半天.........

发现,自己在把https换成http的时候,设置了cookie

      manager.getSessionIdCookie().setSecure(false);

这个应该设置成false,我设置成true了,所以一直无法登录

原来我的访问URL协议头是HTTP,而Weblogic里面的配置被人改动了。把cookie-secure的值改为了truetrue意味着"指示浏览器仅通过 HTTPS 连接传回 cookie。这可以确保 cookie ID 是安全的,且仅用于使用 HTTPS 的网站。如果启用此功能,则 HTTP 上的会话 Cookie 将不再起作用。"唉,明白了,怪不得一直都取不到COOKIE。

复制代码

 1 public void service(HttpServletRequest request, HttpServletResponse response) {
 2         // 创建cookie
 3         Cookie cookie = new Cookie("key", "value");
 4         // 关键地方:cookie设为false
 5         cookie.setSecure(false);
 6         response.addCookie(cookie);
 7         // 从request中取得cookie,并输出
 8         Cookie[] cookies = request.getCookies();
 9         for (Cookie c : cookies) {
10             System.out.println(c.getValue());
11         }
12         RequestDispatcher dispatcher = request
13                 .getRequestDispatcher("index.jsp");
14         try {
15             dispatcher.forward(request, response);
16         } catch (ServletException e) {
17             e.printStackTrace();
18         } catch (IOException e) {
19             e.printStackTrace();
20         }
21     }

 

除了上面这种原因导致了客户端一直不停得跳转到登录页面,还发现了一种原因,就是虽然登录验证通过了,但是登录之后,又会跳到登录页,且每次都在不停得产生新的sessionid,困扰了我很久。

后来终于解决了!!

在请求过程中,shiro的默认存储sessionid的cookie名是JSESSIONID,在某些情况下,可能会被容器改写,所以改掉这个名称不要使用默认的名称就可以了!!

public DefaultWebSessionManager() {
        Cookie cookie = new SimpleCookie(ShiroHttpSession.DEFAULT_SESSION_ID_NAME);
        cookie.setHttpOnly(true); //more secure, protects against XSS attacks
        this.sessionIdCookie = cookie;
        this.sessionIdCookieEnabled = true;
    }
 

 

你可能感兴趣的:(SpringBoot学习记录,问题备注)