`

用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进行权限控制"指的是使用`Filter`来实现用户访问权限的管理,确保只有登录后的用户才能访问特定的资源。下面我们将深入探讨`Filter`的工作原理以及如何实现登录控制。 `Filter`是Java Servlet...

    filter 实现权限控制

    本文将详细探讨如何通过`Filter`实现权限控制,以及与RBAC(Role-Based Access Control,基于角色的访问控制)的关系。首先,让我们理解`Filter`的概念。 `Filter`是Java Servlet API中的一个重要组件,它允许我们...

    Filter控制页面的访问权限

    下面我们将详细讨论Filter的工作原理以及`UserRoleFilter`如何实现页面访问权限控制: 1. **Filter生命周期**: - **初始化**:当Filter被加载时,会调用`init(FilterConfig filterConfig)`方法。在这个方法中,`...

    java写的一个权限控制的插件

    4. **过滤器与拦截器**:为了实现权限控制,插件可能利用了Servlet Filter或者Spring MVC的Interceptor机制,对请求进行预处理,判断用户是否有权限执行当前操作。 5. **动态权限分配**:在某些情况下,权限可能...

    SpringBoot 权限控制(菜单控制,页面元素控制,url控制)

    除了手动配置,还可以使用代码生成工具,如MyBatis的Generator,自动生成CRUD操作及对应的权限控制代码。这种方式可以节省大量手动编写代码的时间,但可能需要对生成的代码进行调整以适应RBAC需求。 在实际开发中,...

    JSP权限管理系统filter

    解压后,你可以查看源码,学习如何实现一个具体的JSP权限管理系统,包括Filter的使用、用户验证和权限控制等。 总的来说,JSP权限管理系统filter是一种有效的安全措施,它通过拦截和处理请求,确保了Web应用的安全...

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

    通过上述讲解,你应该对如何在Java Web中使用Filter实现访问权限控制有了基本的理解。在深入研究这个示例的博客文章(https://blog.csdn.net/yuzhiqiang_1993/article/details/81288912)后,你可以了解到更多具体...

    springboot springsecurity动态权限控制

    - 使用MockMVC或者实际运行应用程序进行测试,确保权限控制按照预期工作。 综上所述,通过Spring Boot和Spring Security的结合,我们可以构建一个具备动态权限控制的系统,使菜单权限的管理更加灵活,适应业务的...

    java后台权限控制

    本教程将深入探讨这两种不同的权限控制实现方式:一种不使用Shiro,另一种则是结合Shiro进行权限管理。 1. **不使用Shiro的权限控制**: 在不依赖Shiro的情况下,Java后台权限控制通常需要自定义实现。这通常涉及到...

    shiro动态URL权限控制

    本教程将深入探讨如何在Spring环境中集成Shiro,并利用其动态URL权限控制功能来保护Web应用的安全。 在Spring中整合Shiro,首先需要在项目中引入Shiro的依赖库。这通常通过Maven或Gradle的配置来完成,确保项目可以...

    过滤器实现多层权限控制

    过滤器(Filter)技术常被用来实现多层权限控制,确保只有合法的用户才能访问特定的资源。本文将深入探讨如何利用过滤器实现多层权限控制,并结合给定的标签“源码”和“工具”,来提供一个具体的实践示例。 首先,...

    java权限控制

    Spring Security是Java Web开发中广泛使用的安全库,它提供了强大的权限控制功能。通过配置或注解,可以轻松地实现过滤器链,进行身份验证和授权。 6. **Filter的配置**: 在`web.xml`中,我们需要定义过滤器并...

    Java Filter 限制用户浏览权限

    此外,我们还可以根据需要进一步扩展过滤器,实现更复杂的权限控制。例如,我们可以添加角色检查,只允许具有特定角色的用户访问某些资源。这可以通过在会话中存储用户的角色信息,并在过滤器中进行比较来完成: ``...

    filter 过滤用户权限

    本篇将详细探讨`filter`如何用于过滤非登录用户的权限控制,以及相关的源码实例。 一、Filter基本概念 在Java Servlet规范中,Filter是一个接口,它允许开发者在请求到达Servlet之前对其进行拦截和处理,也可以在...

    springboot_shiro_thymeleaf权限控制

    总的来说,“springboot_shiro_thymeleaf权限控制”项目提供了一个实用的示例,展示了如何在Spring Boot应用中集成Shiro进行权限管理,并使用Thymeleaf创建动态视图。这为开发者提供了一个良好的起点,便于理解和...

    利用Filter限制用户浏览权限

    本话题将详细探讨如何利用Filter来限制用户浏览特定的页面,以实现用户权限控制。 一、Filter概述 Filter是Servlet规范的一部分,它允许开发者在请求到达目标资源(如Servlet或JSP)之前和之后对请求和响应进行拦截...

    shiro-freemarker权限控制标签

    Apache Shiro 和 Freemarker 的整合主要集中在权限控制方面,这对于构建安全、易维护的Web应用至关重要。Shiro 是一个强大的Java安全框架,提供身份验证、授权、加密和会话管理功能,而Freemarker则是一种常用的模板...

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

    在这个场景中,我们将探讨如何使用`Filter`来实现权限访问控制,以及确保同一账号只能在一台设备上登录。 **一、Filter过滤器基础** 1. **定义与工作原理**:`Filter`是Servlet规范的一部分,它在请求到达目标...

    用 Filter 作为控制器的 MVC

    - 控制流更灵活:Filter可以在请求进入Struts2之前处理特定逻辑,如权限验证。 - 重用性:Filter可以应用于多个Action,提供通用的服务。 总的来说,Struts2中通过Filter实现的MVC模式让开发者能更好地控制请求的...

    Spring Security 权限控制中文API

    这个“Spring Security 权限控制中文API”很可能是对Spring Security框架的中文文档或指南,帮助开发者理解和使用权限控制功能。 Spring Security的核心在于保护资源、进行身份验证(Authentication)和授权...

Global site tag (gtag.js) - Google Analytics