两亩三分地

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  17 随笔 :: 20 文章 :: 2 评论 :: 0 Trackbacks
我们大家都有使用博客或者其他类似系统的经验,往往都是通过用户验证以后,才进行其他的操作。
上一节,在处理完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方法里,如果检验失败的话,转到用户登录界面
 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页面,也可以把验证直接写在页面里。
<% User user = (User)session.getAttribute("user");
   if (user == null){
   
response.sendRedirect(request.getContextPath()+"/admin/");
   }
%>


posted on 2009-09-30 16:47 Chucky 阅读(212) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: