Chủ Nhật, 6 tháng 7, 2014

Login and Logout

Login and logout là 2 thao tác mà bất kỳ một ứng dụng web nào cũng cần phải có.Hôm nay,chúng ta sẽ tìm hiểu các dùng 2 thao tác trên trong JSP Servlet.

-Ta sẽ xây dựng 1 ứng dụng web với thao tác login va logout:
+Trước khi đăng nhập người dùng không được phép truy xuất vào các tài  nguyên được bảo vệ
Chặng hạn ,ta đang ơ trag login page.jsp,ta buộc phải đăng nhập để vào trang homepage.jsp.
Ở đây ta sẽ sử dụng filter Authenticate,Filter Authenicate sẽ chặn lại request đến tất cả các trang trong hệ thống.
Trong Filter Authenticate chúng ta khai báo một phương thức như sau:

public boolean isFreeAccess(String url) {
        if ((!"".equals(url) && url.contains("Welcome")) || (!"".equals(url) && url.contains("LoginServlet.jsp"))) {
            return true;
        }
        return false;
    }

Phương thức này dùng để check và phân loại request.

Tiếp đến trong phương thức doFilter chúng ta viết những đoạn mã sau:

String url = httpRequest.getRequestURI();
        request.setAttribute("wantedUrl", url);

        if (isFreeAccess(url) || httpRequest.getSession().getAttribute("username") != null) {
            chain.doFilter(request, response);
        } else {
            RequestDispatcher dis = request.getRequestDispatcher("Login.jsp?url=" + url + "");
            dis.forward(request, response);
        }

+Một Servlet sẽ lam nhiệm vụ kiểm tra username và password của người dùng nhập vào,nếu username và password của dùng nhập vào trùng với username ,password được lưu trong database ,kết quả sẽ được resquestDispatcher tới trang homepage.jsp,còn nếu sai sẽ trả về trang hiện thời.

 String username = request.getParameter("username");  
 String password = request.getParameter("password"); 
 User user = new User(username, password);   
 if (UserModel.checkLogin(user) == true) {
 HttpSession s=((HttpServletRequest) request).getSession(); 
 s.setAttribute("username", username);               
 RequestDispatcher rd = request.getRequestDispatcher("home.jsp");                
rd.forward(request, response);            
} else {                
RequestDispatcher rd = request.getRequestDispatcher("login.jsp");                
rd.forward(request, response);           
 }


-Logout:để logout ta dùng phương thức session.invalidate(),sau đó resquestDispatcher về trang login,jsp

HttpSession session = request.getSession();
              session.invalidate();
              response.sendRedirect("login.jsp");






Không có nhận xét nào:

Đăng nhận xét