2013-07-04 2 views
0

로그인 방법에서 세션을 사용하는 방법을 알 수있는 사람은 누구입니까? 여기 내 loging 코드와 그것을 위해 세션을 넣어 및 방법을 모르겠어요 ..자바 서블릿에서 세션 사용

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(); 
    } 
} 
} 

난 그냥 "내부에 몇 줄의 코드를 넣어 correctly.need 워킹 경우 (us.Userlogin (u.getUname() , u.getPwrd())) "문이 코드 부분을 통해 나를 안내합니다

+0

스프링 시큐리티를 사용해 보셨습니까? 당신이 바퀴를 재발 명하고있는 것처럼 보입니다. – david99world

+0

세션에 암호를 저장하면 안됩니다. 올바른지 확인한 다음 폐기해야합니다. 또한 [ "세션 고정"] (https://www.owasp.org/index.php/Session_fixation)이라는 위협에주의하십시오. – Multithreader

답변

0

언급 한 코드를 통해 로그인하고 다음에 다시 액세스하여 액세스하지 않으려는 것을 의미합니까? 기능성? 따라서 특정 시간 (예 : 30 분)의 수명주기에 걸쳐있는 세션 객체에 로그인 상태를 나타내는 플래그를 넣어야합니다. 그리고 클라이언트가 로깅했는지 여부를 결정하기 위해 요청이 오면 매번 플래그를 쿼리하는 필터를 넣습니다. 학습 목적으로 프로젝트를 수행하는 것이 유용 할 것입니다.

-1

제대로했는데 약간 변경하면 직접 로그인 방법을 호출하지 마십시오. 로그인 방법을 호출하기 전에 세션이 이미 존재하는지 여부를 확인하십시오. (세션이 존재하는 경우 사용자가 이미 로그인되어 있으면 사용자가 이미 홈 페이지로 리디렉션됩니다. 그렇지 않은 경우 아직 로그인하지 않은 사용자이므로 로그인 방법을 호출하십시오)

관련 문제