1.网上常见的重写FilterInvocationDefinitionSource的做法
http://www.family168.com/oa/springsecurity/html/ch005-resource-db.html#d0e585
具体方法参照这里
http://www.iteye.com/topic/319965
此种方法存在一个问题:系统会在初始化时一次将所有资源加载到内存中,即使在数据库中修改了资源信息,系统也不会再次去从数据库中读取资源信息。这就造成了每次修改完数据库后,都需要重启系统才能时资源配置生效。
解决方案:如果数据库中的资源出现的变化,需要刷新内存中已加载的资源信息
2.SpringSide3新写了一个 FactoryBean,向默认的DefaultFilterInvocationDefinitionSource注入从 ResourceDetailService中返回的RequestMap.
springside中applicationContext-security.xml代码如下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:s="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.4.xsd"
default-autowire="byType" default-lazy-init="true">
<description>SpringSecurity安全配置</description>
<!-- http安全配置 -->
<s:http auto-config="true" access-decision-manager-ref="accessDecisionManager">
<s:form-login login-page="/login.action" default-target-url="/"
authentication-failure-url="/login.action?error=true" />
<s:logout logout-success-url="/" />
<s:remember-me key="e37f4b31-0c45-11dd-bd0b-0800200c9a66" />
</s:http>
<!-- 认证配置 -->
<s:authentication-provider user-service-ref="userDetailsService">
<!-- 可设置hash使用sha1或md5散列密码后再存入数据库 -->
<s:password-encoder hash="plaintext" />
</s:authentication-provider>
<!-- 项目实现的用户查询服务 -->
<bean id="userDetailsService" class="org.springside.examples.miniweb.service.security.UserDetailsServiceImpl" />
<!-- 重新定义的FilterSecurityInterceptor,使用databaseDefinitionSource提供的url-授权关系定义 -->
<bean id="filterSecurityInterceptor" class="org.springframework.security.intercept.web.FilterSecurityInterceptor">
<s:custom-filter before="FILTER_SECURITY_INTERCEPTOR" />
<property name="accessDecisionManager" ref="accessDecisionManager" />
<property name="objectDefinitionSource" ref="databaseDefinitionSource" />
</bean>
<!-- DefinitionSource工厂,使用resourceDetailsService提供的URL-授权关系. -->
<bean id="databaseDefinitionSource" class="org.springside.modules.security.springsecurity.DefinitionSourceFactoryBean">
<property name="resourceDetailsService" ref="resourceDetailsService" />
</bean>
<!-- 项目实现的URL-授权查询服务 -->
<bean id="resourceDetailsService" class="org.springside.examples.miniweb.service.security.ResourceDetailsServiceImpl" />
<!-- 授权判断配置, 将授权名称的默认前缀由ROLE_改为A_. -->
<bean id="accessDecisionManager" class="org.springframework.security.vote.AffirmativeBased">
<property name="decisionVoters">
<list>
<bean class="org.springframework.security.vote.RoleVoter">
<property name="rolePrefix" value="A_" />
</bean>
<bean class="org.springframework.security.vote.AuthenticatedVoter" />
</list>
</property>
</bean>
</beans>
springside具体代码参照这里
http://www.springside.org.cn/
分享到:
相关推荐
以上是根据提供的文档标题、描述及部分内容整理的关键知识点,涵盖了Spring Security的基本概念、配置方法、示例程序以及认证机制等方面的内容。对于想要深入学习Spring Security的人来说,这些内容将非常有用。
项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎随时与我联系,我会及时为您解惑,...
在权限管理中,Spring Security(原名Acegi)模块可以用来实现细粒度的访问控制,比如基于角色的权限分配,限制特定用户或角色对特定资源的访问。 在实际应用中,权限管理通常包括以下几个核心部分: 1. 用户管理...
- `spring_user` 文件夹可能包含了关于用户管理的示例代码,比如用户注册、登录、权限控制等,这些通常涉及到 Spring Security 或者自定义的身份验证和授权逻辑。 7. **其他示例** - `spring001` 文件夹可能包含...
2. **Spring Security**:作为Spring生态的一部分,Spring Security是一个强大的安全管理框架,用于处理身份验证和授权。在这个项目中,Spring Authority很可能是对Spring Security的定制和扩展,用于实现细粒度的...
这份“spring文档整理”包含了不同版本的Spring中文文档、相关文章和指南,对于学习和深入理解Spring框架至关重要。下面将详细阐述这些资源中的关键知识点。 首先,"spring 2.5 中文文档"和"spring 2.0 中文文档...
对于初学者,首先应该理解Spring的基本概念,如IoC和AOP,然后逐步学习Spring的各个模块,例如Spring MVC(用于构建Web应用)、Spring JDBC和MyBatis(用于数据库访问)以及Spring Security(用于应用安全)。...
总的来说,这个Java信息注册系统的学习资源涵盖了后端开发、数据库操作、用户认证、数据安全等多个方面,是学习Java Web开发和数据库管理的一个实践案例。通过研究这个项目,学习者不仅可以提升Java编程能力,还能...
同时,熟悉Spring Boot、Spring Cloud等相关技术,以及Spring Security和Spring Data等扩展模块,将进一步提升你的专业水平。在学习和实践中,不断积累和掌握这些知识,将有助于你在Java开发领域取得成功。
7. **Spring Security**:Spring Security提供了一套全面的安全管理框架,可以处理认证、授权等安全问题。 8. **Spring Batch**:用于处理批量数据处理任务,包括读取、处理和写入大量数据。 9. **Spring ...
《Spring_API大全》是针对Java开发者的宝贵资源,包含了Spring框架不同版本的API文档和参考手册,旨在帮助开发者深入理解和高效使用Spring框架。这个压缩包包含以下四个子文件: 1. **Spring_2.0_api.CHM**:这是...
本篇文章将深入探讨如何使用Spring Boot、JPA连接数据库以及设置登录拦截器来拦截指定路径。 首先,我们需要理解Spring Boot中的JPA(Java Persistence API)是如何连接到数据库的。JPA是Java EE的一部分,提供了一...
这个"Spring-jar包集合"显然是一系列与Spring框架相关的jar文件,可能是为了方便开发者在项目中快速集成和使用Spring功能而整理的。在这里,我们将深入探讨Spring框架的主要组件和功能,以及如何使用jar包进行开发。...
6. **Spring Data**:这一模块简化了数据库访问,支持多种持久化技术,如JPA、JDBC和NoSQL数据库。它提供了统一的API来操作数据,减少了大量重复代码。 7. **Spring Security**:这是一个强大的安全框架,可以为Web...
Spring Security 与 Thymeleaf 整合时,通过引入 `thymeleaf-extras-springsecurity` 依赖,并在 Thymeleaf 模板中使用特定的命名空间来控制页面元素对不同用户的显示。 Shiro 的设计理念与 Spring Security 有所...
本资源"CRM+JAVA+客户关系管理源码整理"提供了一套基于Java的CRM系统源代码,对于学习和理解如何用Java开发CRM系统极具价值。通过这个源码,开发者可以深入研究CRM系统的架构设计,包括数据模型、业务逻辑和用户界面...
Spring是Java企业级应用开发中最广泛使用的框架之一,它提供了丰富的功能,包括依赖注入、面向切面编程、事务管理以及Web应用开发等。学习Spring对于想要在Java后端开发领域深入的人来说至关重要。 压缩包子文件的...
- **JTA(Java Transaction API)**:适用于分布式事务处理,提供全局事务管理,可以跨多个数据库或资源管理器进行操作。 - **容器管理的事务(CMT)**:例如在Java EE环境中,EJB(Enterprise JavaBeans)和...
9. **安全控制**:考虑到用户数据的安全,系统会包含身份验证和授权机制,如使用Spring Security来保护敏感资源,防止未授权访问。 10. **异常处理与日志记录**:Java的异常处理机制可以帮助捕获和处理程序运行时...
"Awesome Spring"项目则是一个精心整理的资源清单,涵盖了Spring框架及其生态系统的各个方面,包括书籍、教程、课程以及相关的开源工具和库。下面我们将深入探讨这个清单中涉及的知识点,帮助开发者更全面地掌握...