Java web过滤器验证登录防止未登录进入界面
程序员文章站
2024-03-13 21:12:40
今天用ssh2写了个简单的系统,发现了一个问题,我这系统必须先登录成功才能进入主页,但我在浏览器里直接输入主页地址,发现也能进入,这个肯定不好,毫无安全性可言,后经查资料发...
今天用ssh2写了个简单的系统,发现了一个问题,我这系统必须先登录成功才能进入主页,但我在浏览器里直接输入主页地址,发现也能进入,这个肯定不好,毫无安全性可言,后经查资料发现需要登录过滤器,就试了下,发现果然可以避免未经登录即可进入主页的危险,下面是我整理出的详细步骤:
1.首先写一个权限过滤filter类,实现filter接口
import java.io.ioexception; import javax.servlet.filter; import javax.servlet.filterchain; import javax.servlet.filterconfig; 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 { @override public void init(filterconfig filterconfig) throws servletexception { // todo auto-generated method stub } @override public void dofilter(servletrequest request, servletresponse response, filterchain chain) throws ioexception, servletexception { // 获得在下面代码中要用的request,response,session对象 httpservletrequest servletrequest = (httpservletrequest) request; httpservletresponse servletresponse = (httpservletresponse) response; httpsession session = servletrequest.getsession(); // 获得用户请求的uri string path = servletrequest.getrequesturi(); //system.out.println(path); // 从session里取员工工号信息 string empid = (string) session.getattribute("empid"); /*创建类constants.java,里面写的是无需过滤的页面 for (int i = 0; i < constants.nofilter_pages.length; i++) { if (path.indexof(constants.nofilter_pages[i]) > -1) { chain.dofilter(servletrequest, servletresponse); return; } }*/ // 登陆页面无需过滤 if(path.indexof("/login.jsp") > -1) { chain.dofilter(servletrequest, servletresponse); return; } // 判断如果没有取到员工信息,就跳转到登陆页面 if (empid == null || "".equals(empid)) { // 跳转到登陆页面 servletresponse.sendredirect("/jingxing_oa/login.jsp"); } else { // 已经登陆,继续此次请求 chain.dofilter(request, response); } } @override public void destroy() { // todo auto-generated method stub } }
2.然后在web.xml里配置需要登陆权限验证的jsp文件:
a.如果是某个具体的jsp文件(如a.jsp)需要登陆验证
<!-- 配置登陆过滤器 --> <filter> <filter-name>login</filter-name> <filter-class>com.jingxing.oa.filter.loginfilter</filter-class> </filter> <filter-mapping> <filter-name>login</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
b.如果是某一个目录(如a/目录)整个目录下的文件都需要登陆验证:
<!-- 配置登陆过滤器 --> <filter> <filter-name>login</filter-name> <filter-class>com.jingxing.oa.filter.loginfilter</filter-class> </filter> <filter-mapping> <filter-name>login</filter-name> <url-pattern>/a/*</url-pattern> </filter-mapping>
以上所述是小编给大家介绍的java web过滤器验证登录防止未登录进入界面,希望对大家有所帮助
上一篇: php数组指针操作详解