`

spring1.x 的acegi 配置文件

阅读更多
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>

	<!-- Filter Chain -->
	<!-- 
		CONVERT_URL_TO_UPPERCASE_BEFORE_COMPARISON表示判断URL匹配时,首先将URL转变为大写的格式,
		如果设置为CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON则表示比较前事先转换为小写的形式.
		PATTERN_TYPE_APACHE_ANT表示使用Ant路径风格进行匹配URL的描述,如果不提供这个指令,Acegi使用正则表达式来解析URL路径映射
		/**=...,多个过滤器组成的过滤器链
	-->
	<bean id="filterChainProxy"
		class="org.acegisecurity.util.FilterChainProxy">
		<property name="filterInvocationDefinitionSource">
			<value>
				CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
				PATTERN_TYPE_APACHE_ANT
				/**=httpSessionContextIntegrationFilter,authenticationProcessingFilter,logoutFilter
			</value>
		</property>
	</bean>
	<!--  过滤器链中的过滤器(1),负责处理安全通道的转换,验证码之类 -->
	<!-- 
	<bean id="channelProcessingFilter"
		class="org.acegisecurity.securechannel.ChannelProcessingFilter">
	</bean>
	 -->
	<!--  过滤器链中的过滤器(2) -->
	<bean id="httpSessionContextIntegrationFilter"
		class="org.acegisecurity.context.HttpSessionContextIntegrationFilter" />

	<!-- 认证处理过滤器 -->
	<bean id="authenticationProcessingFilter"
		class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilter">
		
		<!-- ①注入认证管理器 -->
		<property name="authenticationManager"
			ref="authenticationManager" />
		
		<!---1过滤器处理的URL -->
		<property name="filterProcessesUrl"
			value="/j_acegi_security_check" />

		<!-- -2认证成功后转向的URL -->
		<property name="defaultTargetUrl" value="/main.jsp" />

		<!-- -3认证失败后转向的URL -->
		<property name="authenticationFailureUrl"
			value="/index.jsp?login_error=1" />

	</bean>
	
	<!-- ②-1使用基于DAO的认证提供者提供认证服务 -->
	<bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager">
		<property name="providers">
			<list>
				<ref local="daoAuthenticationProvider" />
			</list>
		</property>
	</bean>

	<!-- ③基于DAO的认证提供者 -->
	<!-- ③-1根据用户名获取系统中真实UserDetails 对象的服务类 -->
	<bean id="daoAuthenticationProvider"
		class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
		<property name="userDetailsService" ref="userDetailsService" />
	</bean>

	<!-- ④ 该服务类根据缓存在内存中的用户信息列表获取userDetails对象 -->
	<!--  userMap属性指定可以登入的使用者名称、密码、是否启用、角色等资讯  -->
	<!--  
	<bean id="userDetailsService" class="org.acegisecurity.userdetails.memory.InMemoryDaoImpl">
		<property name="userProperties">
           <bean class="org.springframework.beans.factory.config.PropertiesFactoryBean">
               <property name="location" value="/WEB-INF/users.properties" />
           </bean>
       </property>
	</bean>
	-->
	<!-- 从数据库中拿 -->
	<bean id="userDetailsService"
		class="org.acegisecurity.userdetails.jdbc.JdbcDaoImpl">
		<!-- ② -->
		<property name="dataSource" ref="dataSource" /><!--  ②-1 数据源 -->
		<property name="usersByUsernameQuery"><!--  ②-2 根据用户名查询用户的SQL语句 -->
			<value>
				SELECT username,password, status FROM t_user WHERE
				username = ?
			</value>
		</property>
		<property name="authoritiesByUsernameQuery"><!-- ②-3 根据用户名查询用户权限记录的SQL语句 -->
			<value>
				SELECT u.username,p.priv_name FROM t_user u,t_user_priv
				p WHERE u.user_id =p.user_id AND u.username = ?
			</value>
		</property>
	</bean>
	
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
         <property name="driverClassName">  
             <value>com.mysql.jdbc.Driver</value>               
         </property>  
         <property name="url">  
             <value>jdbc:mysql://localhost:3306/acegi</value>  
         </property>  
         <property name="username">  
             <value>root</value>  
         </property>  
         <property name="password">  
             <value>root</value>  
         </property>  
     </bean>  
     
     <!-- 登出处理 -->  
    <bean id="logoutFilter" class="org.acegisecurity.ui.logout.LogoutFilter">  
        <constructor-arg value="/index.jsp"/> <!-- 登出后的显示页面 -->  
            <constructor-arg>  
               <list>  
                   <bean class="org.acegisecurity.ui.logout.SecurityContextLogoutHandler"/>  
               </list>  
        </constructor-arg>  
    </bean> 
	 
	
</beans>


用户表结构:
mysql> desc t_user;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| USER_ID  | int(11)     | NO   | PRI | NULL    | auto_increment |
| USERNAME | varchar(30) | NO   | UNI |         |                |
| PASSWORD | varchar(30) | YES  |     | NULL    |                |
| STATUS   | tinyint(1)  | NO   |     | 0       |                |
+----------+-------------+------+-----+---------+----------------+
mysql> desc t_user_priv;
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| USER_ID   | int(11)     | NO   | PRI | 0       |       |
| PRIV_NAME | varchar(30) | NO   | PRI |         |       |
+-----------+-------------+------+-----+---------+-------+
分享到:
评论

相关推荐

    spring security2.x配置

    详细的spring security2.x配置

    Spring 3.x企业应用开发实战光盘源码part02

    可以通过XML配置文件或注解来定义和配置bean,包括其属性、初始化方法和销毁方法。 5. **数据访问集成**:Spring提供了对各种数据访问技术的支持,如JDBC、Hibernate、JPA等,简化了数据库操作。 6. **MVC框架**:...

    spring3.x企业应用附件

    1. **依赖注入(Dependency Injection, DI)**:这是Spring的核心特性之一,允许对象之间的依赖关系通过配置文件或注解来管理,而不是硬编码在类内部。这提高了代码的可测试性和可维护性。 2. **AOP(面向切面编程...

    acegi-sample.rar_acegi-1.0.7_acegi-sample.part2_spring-1.2.4.jar

    而"spring-1.2.4.jar"则是Spring框架的一个较旧版本,表明Acegi Security是在Spring 1.x时代设计的,那时候Spring尚未内置完整的安全模块。 首先,让我们了解Acegi Security的主要组件: 1. **Authentication**...

    如何在Spring中集成Acegi 2.x安全框架

    同时,需要在`WebContent/WEB-INF`目录下创建`applicationContext.xml`文件,这是Spring的配置文件。 接下来,是添加Acegi安全框架的配置。在`web.xml`中,我们需要声明一个名为`springSecurityFilterChain`的过滤...

    Spring 3.x企业应用开发实战

    1. **依赖注入(Dependency Injection, DI)与控制反转(Inversion of Control, IoC)**:Spring的核心特性之一,它允许开发者通过配置文件或注解来定义对象间的依赖关系,而不是在代码中硬编码。这样可以提高代码的...

    《精通Spring 2.x-企业应用开发详解》chapter16.rar

    7. **Bean的配置与装配**:在Spring 2.x中,通常使用XML配置文件来定义和装配Bean。包括定义Bean的类、属性、依赖关系,以及初始化方法等。 8. **Spring的单元测试**:Spring提供了测试支持,包括模拟对象(Mock ...

    Acegi_db1.rar_acegi

    1. **身份验证**: Acegi提供了多种身份验证机制,如基于表单的登录、HTTP基本认证、X.509证书等。通过定义AuthenticationProvider,开发者可以自定义身份验证逻辑。 2. **访问控制**:Acegi允许开发者使用基于角色...

    acegi 例子源码

    在《精通spring2.x企业级应用》的第17章中,作者可能详细解释了如何配置这些组件,以及如何编写安全相关的XML配置文件。读者通过实践这些示例代码,能深入理解Acegi Security的工作原理,并学习如何在实际项目中应用...

    acegi-security-tiger-1.0.0-RC2.jar.zip

    如果项目是基于Spring的,需要在配置文件中启用Acegi Security,并根据应用需求配置相应的安全策略。同时,需要阅读并遵守`license.txt`中的条款,以确保合法合规地使用该框架。 值得注意的是,Acegi Security后来...

    Spring_3.x企业应用开发实战 目录

    - **类包及Spring配置文件规划**:组织代码结构和配置文件。 - **2.3 持久层** - **建立领域对象**:定义应用的核心实体类。 - **UserDao**:负责用户数据的操作。 - **LoginLogDao**:记录用户的登录日志。 -...

    acegi-security.jar.zip

    Spring Security在Acegi的基础上进行了扩展和优化,提供了更强大的安全特性,如支持OAuth2、JWT等现代认证协议,以及更丰富的配置选项。对于处理Java Web应用的安全问题,熟悉Spring Security是必备的技能。

    acegi-security-0.8.2.jar.zip

    7. **许可证信息**: “springframework-license.txt”文件通常包含了软件的许可证条款,对于Acegi Security 0.8.2来说,这可能是Apache Software License 2.0,这是一个宽松的开源许可证,允许商业和非商业用途。...

    Spring_Security_2_配置精讲

    5. **配置文件**:创建 Spring Security 的配置文件 `security-context.xml` 和 web.xml 文件。这两个文件将在后续章节中详细介绍。 #### 参考资料 1. **官方文档**:Spring Security 自带的 Reference 文档是最...

    grails-acegi-0.5.zip

    1. `AcegiGrailsPlugin.groovy`:这是Grails插件的核心配置文件,它定义了插件的元数据、依赖项、安装和卸载时的钩子函数等,是插件生命周期管理的关键。 2. `application.properties`:这个文件用于存储应用的属性...

    Spring+LDAP实现单点登录

    在`springside.src`压缩包中,可能包含了示例代码或配置文件,用于演示如何实现Spring+LDAP的SSO功能。 总之,Spring与LDAP的结合为构建SSO系统提供了一个高效、灵活的解决方案。通过理解这些核心概念和技术,...

    跟我学spring3(总共13章)

    1. **依赖注入(DI)**:这是Spring的核心特性,通过配置文件或注解,实现对象间的依赖关系解耦,使得代码更加灵活和易于测试。 2. **AOP(面向切面编程)**:Spring提供了强大的AOP支持,允许开发者定义“切面”,将...

    Acegi框架介绍.rar

    通过声明式配置,开发者可以在XML配置文件中定义安全规则,而无需修改业务代码。 五、实际应用示例 1. **URL访问控制**:使用Acegi可以限制某些URL只能由特定角色的用户访问。 2. **方法访问控制**:在Service或DAO...

    spring-security所需要的jar包,

    在使用这些库时,开发者需要确保他们的项目配置正确,包括Spring Security的配置文件(如 applicationContext-security.xml),以及对所需安全功能的定制,例如登录页面、权限控制、会话管理等。同时,源代码和测试...

    使用Acegi作为基于Spring框架的WEB应用的安全框架

    总的来说,Acegi Security(Spring Security)为Spring开发者提供了一套强大而全面的安全解决方案,通过其丰富的配置选项和可扩展性,能满足各种复杂的应用场景。无论是初学者还是经验丰富的开发者,理解和掌握Acegi...

Global site tag (gtag.js) - Google Analytics