我正在开发一个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
请帮助
答案 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.
}