注销Spring

时间:2016-02-03 11:32:35

标签: spring jsp session

我正在开发一个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

请帮助

2 个答案:

答案 0 :(得分:0)

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

session.invalidate(); 

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

答案 1 :(得分:0)

//在您的控制器上执行

Map

//在您的jsp页面上执行

@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.
}