【问题标题】:Destroy HttpSession on logout Spring在注销 Spring 时销毁 HttpSession
【发布时间】:2016-05-12 13:56:31
【问题描述】:

我正在开发一个 spring web 项目并创建了 HttpSession 来验证登录和访问 jsp 页面。我没有使用标准的安全弹簧技术。但是,我在登录时设置会话并在每个 webService 调用上匹配此会话。 现在在注销时,我想在登录屏幕上重新分配用户并销毁会话,以便在没有重新登录的情况下无法访问任何内容。我不知道如何销毁会话。

// 这是设置会话的代码

StaffModel  record1 =   (StaffModel) data.get("records");           // separating records

        if(record1 != null)
        {
            SessionData sessionData = new SessionData();

            sessionData.setMobileNo(record1.getMobileNo());
            sessionData.setCityName(record1.getCity());
            sessionData.setUserName(record1.getFirstName());
            sessionData.setUserRole(record1.getRole());
            sessionData.setSessionID(UUID.randomUUID());        
            sessionObj.setAttribute("SessionData" , sessionData);                   // setting session Data
        }

// 在 jsp 中我正在访问这些会话

<script>
var sessionData;
var sUserName;
var sMobileNo;
var sUserRole;
var sCityName;
var sSessionId;

function sessionCall()
{
    sUserName   =   '<% SessionData obj =   (SessionData)session.getAttribute("SessionData");
                            out.print(obj.getUserName());
                    %>';

    sMobileNo   =    <%     out.print(obj.getMobileNo());   %>;
    sUserRole   =   '<%     out.print(obj.getUserRole());   %>';    
    sSessionId  =   '<%     out.print(obj.getSessionID());  %>' 
    sCityName   =   '<%     out.print(obj.getCityName());   %>';

    sessionData = 
    {
        "mobileNo" : sMobileNo,
        "cityName" : sCityName,
        "userName" : sUserName,
        "userRole" : sUserRole,
        "sessionID": sSessionId
    }; 

     document.getElementById("staffName").innerHTML=sUserName;
     document.getElementById("staffRole").innerHTML=sUserRole;
}

</script>

问题:单击注销按钮会破坏 HttpSession

请帮忙

【问题讨论】:

    标签: spring jsp session


    【解决方案1】:

    您始终可以将 HttpSession 会话作为参数添加到 Controller 方法中。去做并尝试:

    session.invalidate(); 
    

    P.S.:似乎使用 Spring Security 对您来说更容易,您应该考虑更改配置。

    【讨论】:

      【解决方案2】:

      // 在您的控制器上执行此操作

      @RequestMapping(value = "/logout")
      public String logout(HttpServletRequest request) {
          HttpSession session = request.getSession(false);
          if (session != null) {
              session.invalidate();
          }
          return "redirect:/";  //Where you go after logout here.
      }
      

      // 在你的jsp页面上做这个

      <a href ="logout">Logout</a>
      

      【讨论】:

        猜你喜欢
        • 2017-07-18
        • 1970-01-01
        • 2020-06-17
        • 1970-01-01
        • 2016-10-23
        • 1970-01-01
        • 1970-01-01
        • 2012-12-18
        • 1970-01-01
        相关资源
        最近更新 更多