我有基本的登錄 - 註銷會話管理問題。 當我點擊登錄按鈕,下面的這個功能被觸發。在LDAP認證後,它移動到index.html我顯示他們的名字。會話即使失效後仍存在
function validate()
{
var pageTitle=$(document).attr('title');
var un=document.getElementById('username').value;
var pwd=document.getElementById('pass').value;
$.ajax({
'url':'/analytics_1/validate',
'data':'userName='+un+'&password='+pwd,
'type':'GET',
'success':function(response)
{
if(response==1)
{
$.ajax({
'url':'/analytics_1/LogButton',
'type':'POST',
'data':'userName='+un+'&buttonId=VIKALPLoginButton&pageTitle='+pageTitle,
'success':function()
{
window.open("index.html","_self");
}
});
}
else
{
alert("Invalid Credentials");
}
}
});
}
我檢查後創建LogButton.java會話,如果它是新
if(session.isNew())
{
System.out.println("session is not set, lets create the name");
associate=req.getParameter("userName");
session.setAttribute("Associate",associate);
}
else
{
System.out.println("session is already set, lets get the name");
associate=(String)session.getAttribute("Associate");
}
我從我成功登錄
後創建的會話中獲取他們的名字和我做一些動作和註銷,
$('#logout').on('click',function()
{
var pageTitle=$(document).attr('title');
$.ajax({
'url':'/analytics_1/LogButton',
'data':'buttonId=VIKALPLogoutButton&pageTitle='+pageTitle,
'type':'POST',
'success':function()
{
window.open('Login.html',"_self");
},
'error':function(err)
{
alert("haha:"+err.response);
}
});
});
在LogButton.java中,我檢查按鈕是否是VIKALPLogoutButton,如果屬實,我繼續使會話無效並刪除屬性
if(button.equals("VIKALPLogoutButton"))
{
System.out.println("deleting the session cuz of logout");
session.removeAttribute("Associate");
session.invalidate();
//System.out.println("what happens to the session? " +session.isNew());
}
所有這些都按照要求發生。現在出現安全用例:如果我在沒有登錄的情況下訪問index.html會發生什麼?
於是我開始檢查,如果會話設置與否時的index.html負荷,
$(document).ready(function() {
$.ajax({
'url':'/analytics_1/GetAssocId',
'type':'POST',
'success':function(response)
{
if(response!="null")
{}
else
{
window.open("Login.html","_self");
}
$('#name').text(response);
}
});
.....
.....
}
GetAssocId.java:
public void doPost(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException
{
HttpSession session=req.getSession();
PrintWriter out=res.getWriter();
out.print(session.getAttribute("Associate"));
}
這也能正常工作,即它重定向我登錄。 html如果會話未被創建。
現在的問題是,我無法登錄,甚至提供有效憑據後,莫名其妙的「關聯」屬性被設置爲null,
下面是的System.out.println輸出,我在cmd中 得到
高於白線:登錄,註銷行動(請注意,我已經給會話無效輸出)
低於白線:直接去的index.html,它重定向到login.html的,和你登陸您的有效憑證,
現在這是我的問題,它使會話無效,但它仍然說會話已經存在。更令人困惑的是,會話是存在的,但值爲空。
我該如何解決這個問題?請幫助
PS:除了我提供了LogButton.java的片段是不顯著對於這個問題
謝謝蘇雷什的原因吧!除了你的回答,我似乎在做index.html中的錯誤類型的變量檢查,而不是在'錯誤'中給出ajax的空值,我在'成功'中檢查它是否就像一個字符串! 乾杯 –