我們大家都有使用博客或者其他類似系統的經驗,往往都是通過用戶驗證以后,才進行其他的操作。
上一節,在處理完login事務以后,我們可以訪問某個頁面對自己的博文或者博文分類等等進行操作。
但是由于網頁的關系,如果沒有對每頁進行用戶認證,而我們知道準確的地址的話,我們可以直接訪問地址來對數據進行操作。
比如:
所以我們必須對每一頁或者沒一次操作進行用戶認證。因為user對象是放置在session中的,所有我們可以每次通過檢測session內容來達到驗證的效果。
在這里,我寫了一個輔助類UserValidator,來簡化操作。
上一節,在處理完login事務以后,我們可以訪問某個頁面對自己的博文或者博文分類等等進行操作。
但是由于網頁的關系,如果沒有對每頁進行用戶認證,而我們知道準確的地址的話,我們可以直接訪問地址來對數據進行操作。
比如:
http://localhost:8080/Blog/BlogServlet?method=list
可以查看所有的博文;而http://localhost:8080/Blog/BlogServlet?method=delete&cid=1
這個地址可以對編號為1的博文進行刪除操作。所以我們必須對每一頁或者沒一次操作進行用戶認證。因為user對象是放置在session中的,所有我們可以每次通過檢測session內容來達到驗證的效果。
在這里,我寫了一個輔助類UserValidator,來簡化操作。
package com.blog.utils;
import com.blog.User;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
/**
*
* @author Chucky
*/
public class UserValidator {
public static boolean isValid(HttpServletRequest request){
HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
return user!=null?true:false;
}
}
一般Servlet的里面,可以直接把UserValidator的檢驗直接放置在processRequest方法里,如果檢驗失敗的話,轉到用戶登錄界面import com.blog.User;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
/**
*
* @author Chucky
*/
public class UserValidator {
public static boolean isValid(HttpServletRequest request){
HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
return user!=null?true:false;
}
}
1 protected void processRequest(HttpServletRequest request, HttpServletResponse response)
2 throws ServletException, IOException {
3 response.setContentType("text/html;charset=UTF-8");
4 request.setCharacterEncoding("UTF-8");
5
6 String method = request.getParameter("method");
7
8 if (!UserValidator.isValid(request)) {
9 response.sendRedirect(request.getContextPath()+"/admin/");
10 } else {
11 if (method.equals("add")) {
12 add(request, response);
13 } else if (method.equals("delete")) {
14 delete(request, response);
15 } else if (method.equals("edit")) {
16 preEdit(request, response);
17 } else if (method.equals("update")) {
18 update(request, response);
19 } else if (method.equals("list")) {
20 list(request, response);
21 } else if (method.equals("get")) {
22 get(request, response);
23 } else if (method.equals("preAdd")) {
24 preAdd(request, response);
25 }
26 }
27 }
而一些直接讀取的jsp頁面,也可以把驗證直接寫在頁面里。2 throws ServletException, IOException {
3 response.setContentType("text/html;charset=UTF-8");
4 request.setCharacterEncoding("UTF-8");
5
6 String method = request.getParameter("method");
7
8 if (!UserValidator.isValid(request)) {
9 response.sendRedirect(request.getContextPath()+"/admin/");
10 } else {
11 if (method.equals("add")) {
12 add(request, response);
13 } else if (method.equals("delete")) {
14 delete(request, response);
15 } else if (method.equals("edit")) {
16 preEdit(request, response);
17 } else if (method.equals("update")) {
18 update(request, response);
19 } else if (method.equals("list")) {
20 list(request, response);
21 } else if (method.equals("get")) {
22 get(request, response);
23 } else if (method.equals("preAdd")) {
24 preAdd(request, response);
25 }
26 }
27 }
<% User user = (User)session.getAttribute("user");
if (user == null){
response.sendRedirect(request.getContextPath()+"/admin/");
}
%>
if (user == null){
response.sendRedirect(request.getContextPath()+"/admin/");
}
%>