首先先介绍一下怎么使用这些服务
1,rememberMe服务
a,配置过滤器
-
- <bean id="authenticationProcessingFilter"
- class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilter">
- <property name="authenticationManager">
- <ref bean="authenticationManager" />
- </property>
- <property name="authenticationFailureUrl">
- <value>/Login.html?login_error=1</value>
- </property>
- <property name="defaultTargetUrl">
- <value>/courseInfoList.action</value>
- </property>
- <property name="filterProcessesUrl">
- <value>/j_acegi_security_check</value>
- </property>
- <property name="rememberMeServices">//加上RememberMe服务
- <ref local="rememberMeServices" />
- </property>
- </bean>
-
c,将Remember提供者加入认证管理器上
-
- <bean id="authenticationManager"
- class="org.acegisecurity.providers.ProviderManager">
- <property name="providers">
- <list>
- <ref local="daoAuthenticationProvider" />
- <ref local="rememberMeAuthenticationProvider" />//RememberMe提供者
- <ref local="anonymousAuthenticationProvider" />
- </list>
- </property>
-
-
-
-
- </bean>
RemberMe服务介绍完了,下面介绍利用session控制并发
2,利用session控制并发
a,配置过滤器
b,把上面那个id为authenticationManager的bean中注释掉的内容添上.
接下来讲一下他们之间的冲突(我用的是acegi-security-1.0.3.jar,希望后续版本能修正这个bug):
我把两者配置好后,测试RememberMe服务时老提示以下错误:
java.lang.IllegalArgumentException: SessionIdentifierAware did not return a Session ID (org.acegisecurity.ui.WebAuthenticationDetails@957e: RemoteIpAddress: 127.0.0.1; SessionId: null)
at org.springframework.util.Assert.hasText(Assert.java:169)
仔细翻了一下罗时飞写的那个权限管理的书,发现他也提到这个问题,原来两者不能共存,这也是acegi当前版本的一个bug:
注:当出现我上面这个异常时,可能就是这个问题,要是去掉控制并发的session服务后还出现这个异常,那是因为你浏览器保存的Cookie没有清除,清除一下就OK了
-
- <bean id="concurrentSessionFilter"
- class="org.acegisecurity.concurrent.ConcurrentSessionFilter">
- <property name="sessionRegistry">
- <ref local="sessionRegistry" />
- </property>
- <property name="expiredUrl">
- <value>/</value>
- </property>
- </bean>
- <bean id="sessionRegistry"
- class="org.acegisecurity.concurrent.SessionRegistryImpl" />
- <bean id="concurrentSessionController"
- class="org.acegisecurity.concurrent.ConcurrentSessionControllerImpl">
- <property name="maximumSessions">
- <value>1</value>
- </property>
- <property name="sessionRegistry">
- <ref local="sessionRegistry" />
- </property>
- </bean>
-
-
- <bean id="rememberMeProcessingFilter"
- class="org.acegisecurity.ui.rememberme.RememberMeProcessingFilter">
- <property name="authenticationManager">
- <ref local="authenticationManager" />
- </property>
- <property name="rememberMeServices">
- <ref local="rememberMeServices" />
- </property>
- </bean>
- <bean id="rememberMeServices"
- class="org.acegisecurity.ui.rememberme.TokenBasedRememberMeServices">
- <property name="userDetailsService">
- <ref local="userSecurtyDetails" />
- </property>
- <property name="key">//这里的key是用来保证cookie的真实性,有效性
- <value>springRocks</value>
- </property>
- </bean>
- <bean id="rememberMeAuthenticationProvider"
- class="org.acegisecurity.providers.rememberme.RememberMeAuthenticationProvider">
- <property name="key">
- <value>springRocks</value>
- </property>
- </bean>
-
b,在你的认证过滤器上加上RememberMe服务
分享到:
相关推荐
Acegi Security提供了一个LogoutFilter,该过滤器负责处理注销请求,清理session、Remember Me令牌等,确保用户安全退出。 要实现Acegi Security的"Remember Me"和退出功能,你需要做以下步骤: 1. 配置...
本文将深入探讨Acegi Security中的"rememberMe"功能以及匿名登录的实现机制。 "Remember Me"功能在许多Web应用中非常常见,它允许用户在登录后选择“记住我”,以便在未来的会话中自动登录,而无需每次都输入用户名...
在描述中提到的博文链接可能详细解析了如何配置和使用Acegi Security的"rememberMe"服务。虽然具体内容未给出,但通常"rememberMe"功能的实现涉及以下几个关键知识点: 1. **RememberMe Services**: 这是核心组件,...
在本文中,我们将深入探讨如何使用Acegi Security来实现用户权限的控制。 Acegi Security的核心功能包括: 1. **身份验证**:Acegi Security允许你设置多种身份验证机制,如基于数据库的用户名/密码验证、LDAP验证...
Spring Acegi权限控制是Spring框架中用于实现Web应用安全的一种解决方案。Acegi Security(现已被Spring Security替代)是一个功能强大的安全框架,它主要解决了认证(Authentication)和授权(Authorization)这两...
- **会话管理(Session Management)**: Acegi 可以监控和管理用户的会话,防止会话劫持、会话固定等安全问题。 - **过滤器链(Filter Chain)**:Acegi 使用过滤器链来拦截请求,执行安全检查,这是其实现安全...
3. **会话管理(Session Management)**:Acegi提供了会话管理功能,可以防止会话固定攻击(Session Fixation),并支持会话超时和并发会话控制。 4. **过滤器安全链(Filter Security Interceptor)**:Acegi的...
5. **测试和调试**:在实际运行环境中测试安全功能,确保用户权限设置正确,并使用Acegi提供的日志和调试工具进行问题排查。 6. **处理异常**:配置Acegi的异常处理机制,当用户尝试访问未授权的资源或认证失败时,...
Acegi Security提供了一系列安全服务,如RememberMe服务,可以记住用户的登录状态,使用户在一段时间内无需重新登录。另外,还包括了密码加密服务,确保密码在存储和传输过程中的安全性。 五、与其他Spring组件的...
总的来说,Acegi Security(Spring Security)是Spring生态中的重要组成部分,它提供了一种高效且灵活的方式来管理和保护应用程序的安全,确保用户访问控制的准确性和严密性,从而保障系统的稳定运行。通过深入理解...
Spring Security提供了会话管理功能,包括会话固定保护、会话超时检测和并发会话控制,以防止会话劫持和会话固定攻击。 5. **Remember-Me服务**: 为了提供用户便利,Spring Security 2.0引入了Remember-Me服务,...
5. **会话管理**:Acegi提供了会话管理功能,如会话固定攻击防护、会话超时检测和并发会话控制,以防止恶意用户同时使用同一用户的多个会话。 6. **事件监听**:Acegi允许监听和处理安全相关的事件,如登录成功、...
压缩包内的“集成ACEGI 进行权限控制详细介绍”很可能是详细说明如何在项目中集成和配置ACEGI Security的文档。这个文档可能涵盖了从添加依赖、配置安全设置到编写自定义逻辑的所有步骤,是学习和实践ACEGI ...
5. **表达式语言(Expression-Based Access Control)**:Acegi支持使用SpEL(Spring Expression Language)定义访问控制表达式,如`hasRole('ROLE_ADMIN')`,用于判断用户是否拥有指定的角色。 6. **会话管理...
使用Acegi Security,开发者可以构建出符合企业级需求的安全系统,同时避免了因更换服务器环境而需要大量重构安全配置的问题。对于熟悉Spring,特别是依赖注入原则的开发者来说,掌握Acegi Security将变得更加容易。...
Acegi是Spring框架早期的一个安全模块,用于提供高级的安全性和权限控制。在本文中,我们将深入探讨Acegi如何实现精细的权限控制,直至按钮或HTML元素级别,以及如何将其部署到Tomcat服务器。 首先,Acegi的核心是...
如果你手头有Acegi的详细文档,如acegi.docx和Acegi.zip中的内容,这将是一个宝贵的资源,帮助你深入理解和解决问题。 总结起来,Spring Acegi是一个强大的安全框架,它的功能包括用户认证、权限控制和安全拦截。...
它提供了声明式的安全访问控制,允许开发者在Spring容器中配置安全相关的Bean,利用Spring的依赖注入(IoC)和面向切面编程(AOP)特性。Acegi的主要目标是实现业务对象方法级别的安全控制,确保URL资源、业务类方法...