2014-03-05 76 views
1

我有我的工作項目,我登錄作爲一個tomcat用戶,但我不知道該怎麼註銷,我嘗試關閉tomcat的環節,我們使用Java的春季和這裏是我嘗試從控制器做:停用Tomcat的會話

@RequestMapping(value = "/logout", method = RequestMethod.GET) 
public ModelAndView logoutAction(HttpSession session, ServletRequest request, ServletResponse response, FilterChain chain) { 
    logger.info("Start HomeController.logoutAction"); 
    session.invalidate(); 
    request.getSession(true); 
    logger.info("End HomeController.logoutAction"); 
    return new ModelAndView("home"); 
} 

,但是當我在主頁重定向我不提示輸入用戶名和密碼。現在有人能做到這一點嗎?

+1

你使用彈簧安全嗎?你的背景是什麼樣的? – Stefan

+0

據我所知,我們只是配置tomcat讓我們的項目有一些用戶。與context.xml無關,我們現在也不使用security.xml。只有tomcat用戶具有適當的權限。 – wolver

+0

好吧,我想我要做什麼。這篇文章http://grokbase.com/t/tomcat/users/02a8k075m6/session-invalidate-does-not-work解釋說我必須銷燬並重新創建我的項目的新會話。 – wolver

回答

1

我得到了上述問題的答案。我在互聯網上看到了很多答案,但都是一樣的。最後,從一個人,我知道你有錯誤的驗證數據發送到服務器(用戶名和密碼),所以這傢伙有這樣寫:

function logout(safeLocation){ 
    var mainWindow = window; 
    invalidateCurentSession(); 
    var outcome, u, m = "You should be logged out now."; 
    // IE has a simple solution for it - API: 
    try { outcome = document.execCommand("ClearAuthenticationCache") }catch(e){} 
    // Other browsers need a larger solution - AJAX call with special user name - 'logout'. 
    if (!outcome) { 
     // Let's create an xmlhttp object 
     outcome = (function(x){ 
      if (x) { 
       // the reason we use "random" value for password is 
       // that browsers cache requests. changing 
       // password effectively behaves like cache-busing. 
       x.open("HEAD", safeLocation || location.href, true, "logout", "wrongUser"); 
       x.send(""); 
       // x.abort() 
       return 1;// this is **speculative** "We are done." 
      } else { 
       return; 
      } 
     })(mainWindow.XMLHttpRequest ? new mainWindow.XMLHttpRequest() : console.log("active")) 
    } 
    if (!outcome) { 
     m = "Your browser is too old or too weird to support log out functionality. Close all windows and restart the browser." 
    } 
    window.location = "some url"; 
    return outcome; 
} 

使用JavaScript函數上面,創建一個鏈接(註銷),這調用這個函數:

<a href='javascript:logout()'>logout</a> 

或作爲退出頁面的第一個方法。

(對不起,但我不記得網站的網址)