簡體   English   中英

如何檢查用戶是否使用Session Struts 2登錄

[英]How to check if User Logged in or Not using Session Struts 2

我正在研究struts2。 我使用以下代碼檢查用戶是否已登錄

public String execute()
{
   HttpServletRequest request = ServletActionContext.getRequest();
   HttpSession        session = request.getSession(false);

   System.out.println(session);

   if(session == null)
   {
      return "UserLoggedIn";    
   }

   return "success";
}

當我第一次在控制台中訪問print會話值時,它會打印null。 但是,當我通過刷新頁面來做同樣的事情時,它會打印出如下內容,最終使用戶無需登錄即可訪問頁面。

org.apache.catalina.session.StandardSessionFacade@16f21478

如何執行會話檢查以查看用戶是否登錄。

非常感謝你。

好吧,如果您只是出於學習目的而這樣做,我相信最好是在用戶登錄后將變量存儲在session中。

說,使用單擊登錄按鈕時,如果用戶提供的憑據正確,則可以將變量(已登錄)存儲到會話中,單擊注銷按鈕可以清除此變量。

但是,您還需要注意一些其他事項。

最好使用Struts2提供的SessionAware接口,這是將Session作為Map插入到您的操作類中的一種干凈方法。

public class YouAction implements SessionAware{
    private Map<String, Object> sessionMap;
      @Override
        public void setSession(Map<String, Object> sessionMap) {
            this.sessionMap = sessionMap;
        }
    }

通過上述方法,您可以獨立於HTTP對象的直接依賴項進行操作,這對單元測試很有幫助。

如果可以的話,可以使用Spring安全性,這是處理用戶身份驗證和授權過程的更好的方法。

用戶登錄時在會話中放置一個變量。注銷時,從會話中清除該變量。

然后在session中檢查該變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM