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