`

用Filter 写权限控制

阅读更多

在介绍Spring Security 3.0 之前让我们来复习一下Filter 的用法...

 

Filter 是什么这里就不做具体讲解了...

从功能上就是过滤的作用 因为在web 应用中对应的请求和一些操作都是一些请求 那么我们怎么来使用这一功能呢!

 

1.我们来做一个分析

 

  1) 我们的目标是什么? 在web.xml 中配置 权限参数,有配置的让访问没有的反回到登录页面

  2) 技术分析 用到Filter 类 和web.xml 初始参数的使用

  3) 技术复习 FilterConfig.getInitParameter("paramName")

      MyFilter implements Filter

      {}

 

2.技术实现

 

    1) web.xml 文件添加如下权限内容

 

<!-- addition LoginFilter -->
    <filter>
        <filter-name>loginFilter</filter-name>
        <filter-class>com.admin.rolemanager.LoginFilter</filter-class>
        <!-- addition initParameter -->
        <init-param>
            <param-name>allowParam</param-name>
            <param-value>/login.jsp,/js/us/*,/index.jsp</param-value>
        </init-param>
        <init-param>
            <param-name>loginPage</param-name>
            <param-value>/login.jsp</param-value>
        </init-param>
        <init-param>
            <param-name>serverIsMax</param-name>
            <param-value>/serverIsMax.jsp</param-value>
        </init-param>
    </filter>
    <!-- configuration LoginFilterMapping -->
    <filter-mapping>
        <filter-name>loginFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>

  

   2. 添加java 代码

 

  

package com.admin.rolemanager;

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;

/**
 * 
 * @author liuqing 2010-10-9
 */
public class LoginFilter implements Filter {

	private String allowParam;

	private String loginPage;

	private String serverIsMax;

	public void init(FilterConfig filterConfig) throws ServletException {
		allowParam = filterConfig.getInitParameter("allowParam");
		serverIsMax = filterConfig.getInitParameter("serverIsMax");
		loginPage = filterConfig.getInitParameter("loginPage");
	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {

		HttpServletRequest req = (HttpServletRequest) request;
		HttpServletResponse resp = (HttpServletResponse) response;
			//如果请求的是loginPage就直接反回
			if (req.getRequestURI().equals(
					req.getContextPath() + loginPage)) {
				chain.doFilter(request, response);
				return;
			}
			//根据web.xml 中添加的内容进行split
			String regStr[] = allowParam.split(",");
			int j = 0;
			for (int i = 0; i < regStr.length; i++) {

				System.out.println("log for");
				/**
				 * 注意:因为 getRequestURI() 获得的值是 /ProjectName/index.jsp
				 * 因为web.xml 中的初始参数 没有ProjectName
				 * 所以用到了substring String 进行处理
				 * 用到了startsWith进行匹配
				 */
				if ( (regStr[i] + "/").startsWith(req.getRequestURI()
						.substring(req.getContextPath().length())
						) ) {
					System.out.println("log for ==== end");
					chain.doFilter(request, response);
					return;
				}
			}
			if (!req.getRequestURI().equals(
					req.getContextPath() + loginPage)) {
				resp.sendRedirect(req.getContextPath() + loginPage);
				chain.doFilter(request, resp);
				return;
			}
	}

	public void destroy() {

	}

}

 

 

 

   你可以在web.xml 中配置对应的参数

  

    各位兄弟姐妹。。。你们也可以根据这个例子修改成为基于数据库的权限控制内容存到RDMB中

 

 

 

 

 

 

 

 

 

0
1
分享到:
评论

相关推荐

    Filter进行权限控制

    用filter对登录进行控制,如果想访问某个目录下的文件,必须先登录,如果没有登录会跳转到登录页面。username:fang,password:11

    Filter控制页面的访问权限

    Filter控制页面的访问权限Filter控制页面的访问权限Filter控制页面的访问权限

    filter 实现权限控制

    这是用rbac来实现的,用于对权限的路径的控制

    javaweb实现的访问权限控制示例

    javaweb使用filter实现的访问权限控制示例。详情请看博客:https://blog.csdn.net/yuzhiqiang_1993/article/details/81288912

    filter过滤器实现权限访问控制以及同一账号只能登录一台设备

    filter过滤器实现权限访问控制以及同一账号只能登录一台设备

    springboot权限控制系统

    项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...

    javaweb设计中filter粗粒度权限控制代码示例

    主要介绍了javaweb设计中filter粗粒度权限控制代码示例,小编觉得还是挺不错的,需要的朋友可以参考。

    预防XSS攻击和SQL注入XssFilter

    XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin...

    权限控制的概念及应用

    可以基于 Filter 实现 在数据库中存放 用户、权限、访问 URL 对应关系, 当前用户访问一个 URL 地址,查 询数据库判断用户当前具有权限,是否包含这个 URL,如果包含允许访问,如果不包含 权限不足 !!!

    java中使用Filter控制用户登录权限具体实例

    java中使用Filter控制用户登录权限具体实例,需要的朋友可以参考一下

    Fliter访问权限控制.rar

    里面有我的Filter访问控制权限的全部代码,只要新建maven项目,然后导进,就可以用了,因为数据库版本不同,可能需要自行修改一下数据库连接的代码就好了

    使用Servlet Filter实现系统登录权限

    主要为大家详细介绍了使用Servlet Filter实现系统登录权限,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    java后台权限管理系统源码(spring boot+mvc+mybatis).zip

    java后台权限管理系统源码(spring boot+mvc+mybatis)。 项目是maven,相应的jar包也在压缩包里。项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器)...

    filter过滤器流程及中文乱码解决和客户端IP地址控制

    本教程中以实际例子介绍了过滤器的运行方式,以JSP开发中常见的中文乱码过滤器和限抽客户机IP访问的二个例子,本教程中代码部分转载,都经过本人修改了其中错误,加了详细注释,保证可以正常运行,希望对大家有所帮助

    使用SpringBoot+SpringJPA+Swagger+Shiro快速搭建前后端分离的权限管理系统源码,方便二次开发

    根据这个思路我们可以最终使用Spring的拦截器,或者servlet的Filter实现同样的权限管理 快速搭建前后端分离的权限管理系统 提供一套基于SpringBoo+shiro的权限管理思路. 前后端都加以控制,做到按钮/接口级别的权限...

    springboot+权限管理系统 shiro + ssm实现 实现菜单,自用

    权限管理系统 shiro + ssm实现,实现菜单,有学习的可以下载哦!项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器)...

    JavaWeb Servlet中Filter过滤器的详解

     Filter过滤器,对web服务器所有web资源进行过滤,从而实现一些特殊的功能(权限访问控制、过滤敏感词汇、压缩响应信息)。Filter能够对Servlet容器的请求和响应进行检查和修改,其本身不能生成请求request和响应...

    黑天鹅远控--java远程控制软件

    3.控制端添加了权限判断filter命令 4.重新整理了自定义命令 5.版本检测自动下载升级器 6.ZipMyself项目使用了自定义压缩包,可以设置解压文件的编码 7.所有的环境文件都放置在用户目录下,而不是像2.6版本放在C://...

    Filter.docx

    1.Filter概述 Filter也称为过滤器,可以实现对资源访问的拦截,如实现权限控制,敏感词汇过滤,压缩响应等 2.Filter原理

Global site tag (gtag.js) - Google Analytics