打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
java SSH中防止非法登录 过滤器的使用

//实体类

public class UserBean {
 private int userid;
 private String username;
 private String password;

//get()和set()方法
}

//web.xml配置过滤器

<!-- 登录过滤器web配置
 <filter>
   <filter-name>loginFilter</filter-name>
   <filter-class>filter.LoginFilter</filter-class>
  
   <init-param>
    <param-name>login_uri</param-name>
    <param-value>/login.jsp</param-value>
   </init-param> 
   <init-param>
    <param-name>index_uri</param-name>
    <param-value>/index.jsp</param-value>
   </init-param>   
 </filter>
    <filter-mapping>
    <filter-name>loginFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    -->
    <!-- /*是指向任何页面都进行过滤 -->

//登录方法验证

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class UserManagerImplements extends HibernateDaoSupport implements
  UserManagerInterface {

 public boolean checkUser(String username, String password) {
  boolean flag = false;
  List list =getHibernateTemplate().find(
    "from UserBean where username=? and password=?",
    new String[]{username,password});
  if (list.size() != 0) {
   flag = true;
  }
  return flag;
 }

}

//登录过滤器编写
import user.UserManagerImplements;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class LoginFilter implements Filter {
 private static final String LOGIN_URI="login_uri";
 private static final String INDEX_URI="index_uri";
 private String login_page;
 private String index_page;
 public void init(FilterConfig filterConfig) throws ServletException {
  login_page=filterConfig.getInitParameter(LOGIN_URI);
  index_page=filterConfig.getInitParameter(INDEX_URI);
 
  if(null==login_page || null==index_page){
   throw new ServletException("没有指定的登录页面或主页");
  }
 }
 public void destroy() {
  // TODO Auto-generated method stub

 }
// private UserManagerInterface umi;
// public void setUmi(UserManagerInterface umi) {
//  this.umi = umi;
// }
 public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain chain) throws IOException, ServletException {
 
  HttpServletRequest httpReq=(HttpServletRequest)request;
  HttpServletResponse httpResp=(HttpServletResponse)response;
  HttpSession session=httpReq.getSession();
  String request_uri=httpReq.getRequestURI();
  String ctxpath=httpReq.getContextPath();
  String uri=request_uri.substring(ctxpath.length());
  //判断用户访问的是否是登录页面
  if(login_page.equals(uri)){
   String strlogin=httpReq.getParameter("action");
   if("login".equals(strlogin)){
    //如果提交信息,则对用户进行验证
    String name=httpReq.getParameter("username").trim();
    String pwt=httpReq.getParameter("password").trim();
    if(new UserManagerImplements().checkUser(name,pwt)){
     session.setAttribute("islogin", "true");
     session.setAttribute("username", name);
     String origin_uri=httpReq.getParameter("origin_uri");
     if(null!=origin_uri && !"".equals(origin_uri)){
      httpResp.sendRedirect(origin_uri);
     }else{
      httpResp.sendRedirect(ctxpath+index_page);
      return;
     }
    }else{
     String origin_uri=httpReq.getParameter("origin_uri");
     if(null!=origin_uri && !"".equals(origin_uri)){
      httpReq.setAttribute("origin_uri", origin_uri);
     
     }
     httpResp.setContentType("text/html;charset=utf-8");
     PrintWriter out=httpResp.getWriter();
     out.print("<script language=javascript>alert('用户名或密码错误,请重新输入')</script>");
     RequestDispatcher rd=httpReq.getRequestDispatcher(login_page);
     rd.include(httpReq, httpResp);
     return;
    }
   }else{
    chain.doFilter(httpReq, httpResp);
    return;
   }
  }else{
   String islogin=(String)session.getAttribute("islogin");
   if("true".equals(islogin)){
    chain.doFilter(httpReq, httpResp);
    return;
   }else{
    String strQuery=httpReq.getQueryString();
    if(null!=strQuery){
     request_uri=request_uri+"?"+strQuery;
    }
    httpReq.setAttribute("origin_uri", request_uri);
    RequestDispatcher rd=httpReq.getRequestDispatcher(login_page);
    rd.forward(httpReq, httpResp);
    return;
   }
  }
 }

}


 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
一个servlet登陆过滤器
C#获取网页内容的三种方式
用JSP+Servlet+JavaBean实现MVC设计模式的流程
MVC框架的困惑
Spring MVC防御CSRF、XSS和SQL注入攻击
JSP頁面標簽的編碼實現(JSP)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服