`

浅谈 bboss mvc 页面访问控制实现机制

阅读更多
声明:3.6以后的bboss中已经增加了安全过滤器,不再需要这个拦截器来进行安全认证检测
浅谈 bboss mvc 页面访问控制实现机制,本文介绍如何通过bboss mvc框架中的拦截器来实现页面访问控制功能,内容不多,很简单,但是很实用,呵呵。切入正题。

1.bboss mvc拦截器介绍
1.1 bboss mvc的拦截器接口为:
org.frameworkset.web.servlet.HandlerInterceptor


1.2 bboss mvc提供了页面访问控制的基础抽象类,这个类实现了HandlerInterceptor接口:
org.frameworkset.web.interceptor.AuthenticateInterceptor


AuthenticateInterceptor提供了抽象方法:
protected abstract boolean check(HttpServletRequest request,
			HttpServletResponse response, HandlerMeta handlerMeta);

参数说明:前两个参数是url请求提供了jsp请求对象request和请求响应对象response,第三个参数是mvc请求控制器的元数据信息handlerMeta,通过这个对象用户可以获取到控制的相关定义信息。

返回值说明:返回boolean值,如果是true表示允许访问,为false表示不允许访问。如果验证通过时,还可以将用户会话信息以特定的key值对方式存储到request的attribute中,以便控制器方法中方便地获取用户会话信息;如果验证不通过那么则跳转到用户指定的页面,同时会将用户当前请求的页面信息(页面路径,页面参数)转交给失败跳转页(一般是登陆页面),当登陆通过后,任然允许用户获取这些信息转向到需要访问的页面。

1.3 通过继承AuthenticateInterceptor类并实现其中的抽象check方法用户可以非常方便地实现自己的访问控制拦截器

1.4 用户实现了自己的访问控制拦截器后,还需要在bboss-mvc.xml中配置访问控制拦截和器拦截页面规则(可以非常方便地配置需要拦截的url请求和不需要拦截的url请求,如果不指定这些规则,就拦截所有的url请求方法,这里的url请求指的是mvc控制url请求)。
下面举例说明

2.实现自己的访问控制拦截器
2.1 访问控制拦截器定义
/**
 *  Copyright 2008 biaoping.yin
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.  
 */
package org.frameworkset.web.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.frameworkset.web.servlet.handler.HandlerMeta;



/**
 * <p>
 * MyFirstInterceptor.java
 * </p>
 * <p>
 * Description:
 * </p>
 * <p>
 * bboss workgroup
 * </p>
 * <p>
 * Copyright (c) 2009
 * </p>
 * 
 * @Date 2011-5-31
 * @author biaoping.yin
 * @version 1.0
 */
public  class MyFirstInterceptor extends AuthenticateInterceptor{

	@Override
	protected boolean check(HttpServletRequest request,
			HttpServletResponse response, HandlerMeta handlerMeta)
	{
		String name = request.getParameter("name");
		if(name != null && name.equals("test"))
			return false;
		return true;
	}
	

}


这个访问控制拦截器逻辑非常简单,直接通过name参数值来判断页面是否可以访问,如果name有值并且值为test那么就阻止用户继续访问,否则允许用户访问。

2.2 访问控制拦截器及拦截规则配置

bboss-mvc.xml文件中找到如下内容(如果没有就加进去,这里可以配置多个全局拦截器):
<!-- 配置全局控制器方法拦截器 -->
     <property name="org.frameworkset.web.servlet.gloabel.HandlerInterceptors" >
     	<list componentType="bean">
     		...............
     	</list>
     </property>


找到后将访问控制拦截器配置进去:

<!-- 配置全局控制器方法拦截器 -->
     <property name="org.frameworkset.web.servlet.gloabel.HandlerInterceptors" >
     	<list componentType="bean">
     		<!-- 配置认证检查拦截器 -->
     		<property class="org.frameworkset.web.interceptor.MyFirstInterceptor">
     			<!-- 配置认证检查拦截器拦截url模式规则 -->
     			<property name="patternsInclude">
     				<list componentType="string">
     					<property value="/**/*.do"/>
     				</list>
     			</property>
     			<!-- 配置认证检查拦截器不拦截url模式规则 -->
     			<property name="patternsExclude">
     				<list componentType="string">
     					<property value="/*.html"/>
     				</list>
     			</property>
     			<property name="redirecturl" value="/login.jsp"/>
     		</property>
     	</list>
     </property>


这里需要说明一下:
patternsInclude-用来指定需要拦截的url请求规则列表,可以是通配符,也可以是具体的地址
patternsExclude-用来指定不需要拦截的url请求规则列表,可以是通配符,也可以是具体的地址
redirecturl-用来指定验证失败时需要跳转的页面,例如/login.jsp,前面带/表示这个地址是相对于应用上下文的地址,当前请求的页面信息(页面路径,页面参数)转交给失败跳转页(一般是登陆页面),当登陆通过后,任然允许用户通过获取这些信息转向到需要访问的页面(跳不跳由用户自己决定)。
如果patternsInclude和patternsExclude都没有指定,那么默认拦截所有的控制方法请求。patternsExclude指定的规则优先级要高些,只要匹配上这个规则那么页面通通放行。

ok,就这么简单,呵呵,本文参考bbossgroups 3.2版本功能编写,适用3.2及后续版本。






分享到:
评论
7 楼 yin_bp 2011-06-29  
ainidehsj 写道
最好能上传一个简单demo环境包。

有空了做一个放上来。大家还有什么建议尽管提出来。
6 楼 ainidehsj 2011-06-29  
最好能上传一个简单demo环境包。
5 楼 yin_bp 2011-06-29  
bbossgroups的demo里面就有个简单的例子,
http://www.xtzy.com:800/bboss-mvc/index.htm,当这个地址带name=test这个参数时就跳转到login.jsp页面,例如:
http://www.xtzy.com:800/bboss-mvc/index.htm?name=test
呵呵至于适合业务系统真实的案例,东西很多一下子放不上来,本文只是介绍了基本功能。
4 楼 stworthy 2011-06-29  
能不能给出一个典型案例,接近实际的比较好。
3 楼 yin_bp 2011-06-28  
喜欢页面访问控制研究的朋友,不知道这篇文章对你们有没有帮助哦
2 楼 yin_bp 2011-06-09  
重在参与,重在分享和交流,用不用没关系
1 楼 java_user 2011-06-09  
受教了,虽然可能用不上,但能学习这种思维也很好

相关推荐

    bboss mvcdemo 下载地址

    - 安全控制:详细解释权限控制机制,包括角色管理、权限分配和URL过滤。 - 性能调优:提供性能优化的建议和技巧,如缓存配置、日志优化等。 - 扩展与自定义:指导如何根据需求扩展BBoss MVCDemo,包括自定义拦截器、...

    bboss mvc 通过jsonp实现跨站跨域远程访问

    总结来说,bboss MVC框架通过JSONP机制实现了跨站跨域数据访问,这对于需要进行跨域通信的Web应用非常有用。同时,这个主题也涵盖了源码理解和工具使用,以及可能涉及的国际化开发实践。对于Java Web开发者而言,...

    bboss mvc文件上传下载实战进阶

    NULL 博文链接:https://yin-bp.iteye.com/blog/1131637

    bbossgroups 开发系列文章之一 最佳实践

    本文将深入讲解bbossgroups开发系列文章之一中的最佳实践,涉及bboss MVC框架的基础配置、控制器、数据库访问、DAO组件、业务组件管理以及与前端的交互等方面。 首先,我们来了解bboss MVC框架的基础配置。bboss-...

    企业级J2EE开源框架bboss

    6. **安全控制**:BBoss提供了用户认证和授权机制,包括基于角色的访问控制(RBAC)、会话管理以及CSRF防护等,保障系统安全性。 7. **缓存支持**:集成多种缓存技术,如Ehcache、Redis等,优化数据读取性能,减轻...

    bboss会话共享培训文档

    安全性方面,bboss会话共享通过在客户端基于cookie机制存储sessionid,并设置cookie的HttpOnly属性来防止XSS攻击窃取sessionid,通过设置Secure属性并在HTTPS环境下传输来防止sessionid被窃取。同时,还提供会话信息...

    bboss-mvc.jar

    官方版本,亲测可用

    bboss 安全认证过滤器功能介绍

    BBoss安全认证过滤器是Java Web开发中一种用于实现用户身份验证和权限控制的重要组件。在Web应用程序中,过滤器(Filter)是Servlet规范的一部分,它允许开发者在请求到达目标Servlet或JSP之前进行预处理,以及在...

    基于bboss框架的全面设计源码自动生成工具

    该工具是一款基于bboss...此工具能够自动生成bboss MVC、IOC、持久化、JSP、i18n、SQL配置文件、Web服务、Hessian服务等相关源代码,适用于快速开发和项目迭代。详细文档请参考:http://yin-bp.iteye.com/blog/2256948

    bboss persistent 1.0.2中方便地实现大字段(clob,blob)的处理

    4. **源码分析**:标签中提到的“源码”意味着我们可以通过查看BBoss Persistent的源代码来了解其内部处理大字段的具体实现。通过这种方式,开发者可以更好地理解其工作原理,进行定制化开发或优化。 5. **工具支持...

    springboot整合bboss es增删改查测试demo代码

    本实例是一个基于bboss es spring boot starter的demo maven工程,可供spring boot项目集成bboss elasticsearch rest client参考 展示了通过spring boot管理单集群功能和管理多集群功能 单集群测试用例:...

    bboss-db-elasticsearch-tool-master_java_

    在Java中,传统的JDBC编程方式往往需要编写大量重复的SQL代码,而ORM框架如BBoss-DB-Elasticsearch-Tool则通过元数据(如注解或XML配置)将Java对象与数据库表映射起来,实现了数据的透明访问。这极大地提高了开发...

    bboss+es基本操作示例.zip

    结合bboss和Elasticsearch,开发者可以轻松实现日志实时分析、用户行为追踪、商品推荐等业务场景,通过DSL实现复杂查询和聚合分析,提升应用的数据处理能力。 总之,bboss+es基本操作示例是学习和实践Elastic...

    bboss-gencode:这是一个自动为bboss mvc,ioc,persistent,jsp,i18n,sql配置文件,webservice,hessian服务等生成源代码的工具。Dev文档yin-bp.iteye.comblog2256948-mvc source code

    1.mvc控制器 2.业务组件 3.实体类 4.jsp文件可以定制不同风格的界面模板,目前提供了平台的基础ui风格 5.cxf webservice服务类文件 6.hessian服务类文件 7.sql配置文件 8.ioc / mvc组件装配部署和服务发布配置文件。...

    bboss-elasticsearch开发环境搭建和开发入门视频教程.

    4. **更新和删除**: 更新已存在的文档,或者根据条件删除数据,同样可以通过 BBoss API 实现。 5. **高级功能**: 学习如何利用 BBoss 进行聚合分析、自定义插件开发、性能优化等进阶操作。 **五、视频教程** 1. **...

Global site tag (gtag.js) - Google Analytics