2013-07-04 37 views
0

任何人都可以告訴我如何在登錄方法中使用會話嗎?在這裏我登錄電子代碼及其工作correctly.need把會議對於不知道如何..在java servlet中使用會話

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    String operation = request.getParameter("operation"); 
    if(operation!=null && operation.equalsIgnoreCase("login")){ 
     loginDetail(request,response); 
    }//else if(operation!=null && operation.equalsIgnoreCase("login")){ 
     //logout(request,response); 
    //} 
} 

private void loginDetail(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ 


    User u = new User(); 
    UserService us =new UserServiceImpl() ; 

    String Uname = request.getParameter("txtUname");   
    String Pwrd = request.getParameter("txtPwrd"); 

    u.setUname(Uname); 
    u.setPwrd(Pwrd); 

    System.out.println(Uname+""+Pwrd); 
    try { 
     if(us.Userlogin(u.getUname(),u.getPwrd())){  
      String message = "Thank you, " + Uname +"..You are now logged into the system"; 
      HttpSession session = request.getSession(true); 
      session.setAttribute("username", Uname); 
      session.setAttribute("password", Pwrd);   
      response.setContentType("text/html"); 
      request.setAttribute("message", message); 
      request.getRequestDispatcher("/Menu.jsp").forward(request, response); 
     }else { 
      String message = "You have to register first or check Your user name password again!";    
      request.setAttribute("loginMsg", message); 
      RequestDispatcher rd = getServletContext().getRequestDispatcher("/Login.jsp"); 
      rd.forward(request, response); 
     } 
    } catch (Exception e) { 
     // TODO Auto-generated catch block   
     e.printStackTrace(); 
    } 
} 
} 

我只是把一些代碼行內「如果(us.Userlogin(u.getUname() ,u.getPwrd()))「聲明引導我通過這段代碼

+0

你有沒有考慮過使用Spring Security?這看起來像是在重新發明輪子。 – david99world

+0

你不應該在會話中的任何地方存儲密碼。你只能用它來檢查它是否正確,然後丟棄它。另外,請注意稱爲[「會話固定」](https://www.owasp.org/index.php/Session_fixation) – Multithreader

回答

0

您是否想要通過您提到的代碼登錄,並且下次不想再次登錄時訪問功能? 因此,您需要在跨越特定時間(例如30分鐘)的生命週期的會話對象中放置一個表示登錄狀態的標誌。每當請求來確定客戶端是否已記錄時,您都會放置過濾器來查詢標記。 如果你正在做一個學習目的的項目,這將是有用的。

-1

你做得對,但你需要一點點改變, 不要直接調用登錄方法。在調用登錄方法 之前檢查會話是否已經存在(如果會話存在,則用戶已經登錄,如果他已經登錄將他重定向到主頁,否則用戶尚未登錄,因此調用登錄方法)