web.xml 中添加
<filter>
<filter-name>securityFilter</filter-name>
<filter-class>
org.acegisecurity.util.FilterToBeanProxy
</filter-class>
<init-param>
<param-name>targetClass</param-name>
<param-value>
org.acegisecurity.util.FilterChainProxy
</param-value>
</init-param>
</filter>
<listener>
<listener-class>org.acegisecurity.ui.session.HttpSessionEventPublisher</listener-class>
</listener>
security.xml中添加
<bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy">
<property name="filterInvocationDefinitionSource">
<value>
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
PATTERN_TYPE_APACHE_ANT
/**=concurrentSessionFilter,httpSessionContextIntegrationFilter.....other...
</value>
</property>
</bean>
concurrentSessionFilter一定要在httpSessionContextIntegrationFilter前
<bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager">
<property name="providers">
<list>
<ref local="daoAuthenticationProvider" />
<ref local="anonymousAuthenticationProvider" />
</list>
</property>
<property name="sessionController">
<ref bean="concurrentSessionController" />
</property>
</bean>
<bean id="channelProcessingFilter" class="org.acegisecurity.securechannel.ChannelProcessingFilter">
<property name="channelDecisionManager" ref="channelDecisionManager" />
</bean>
<bean id="concurrentSessionController"
class="org.acegisecurity.concurrent.ConcurrentSessionControllerImpl">
<property name="maximumSessions">
<value>1</value> <----限制登录的次数
</property>
<property name="sessionRegistry" ref="sessionRegistry" />
<property name="exceptionIfMaximumExceeded" value="false" /> <--false为踢出前一个登录用户,true为阻止当前正在登录的用户
</bean>
<bean id="sessionRegistry" class="org.acegisecurity.concurrent.SessionRegistryImpl" />
<bean id="concurrentSessionFilter" class="org.acegisecurity.concurrent.ConcurrentSessionFilter">
<property name="sessionRegistry" ref="sessionRegistry" />
<property name="expiredUrl">
<value>/</value>
</property>
</bean>
<bean id="channelDecisionManager"
class="org.acegisecurity.securechannel.ChannelDecisionManagerImpl">
<property name="channelProcessors">
<list>
<bean class="org.acegisecurity.securechannel.SecureChannelProcessor" />
<bean class="org.acegisecurity.securechannel.InsecureChannelProcessor" />
</list>
</property>
</bean>
分享到:
相关推荐
在本实例中,我们将深入探讨如何使用Acegi来控制用户的权限。Acegi Security已经被Spring Security替代,但其核心思想和机制仍然适用于现代的Spring Security。 首先,我们需要理解Acegi的基础概念。Acegi的核心是`...
- "db"可能指的是数据库相关的配置或日志,Acegi通常需要配置用户数据库来存储用户信息和权限数据。 - "aopacegi"可能是一个包含Acegi与AOP相关配置或实现的文件,可能涉及切面的定义和安全策略的配置。 Acegi ...
本文将深入探讨AceGI在实现用户权限方面的核心概念和关键功能。 首先,用户权限管理是任何Web应用安全性的重要组成部分。AceGI通过定义安全拦截器(如FilterSecurityInterceptor)和访问决策管理者(如...
Acegi的主要目标是实现业务对象方法级别的安全控制,确保URL资源、业务类方法以及领域对象的访问得到适当限制。 1. URL资源的访问控制:Acegi能够设定不同用户群体对网页资源的访问权限。例如,所有用户可以访问...
Acegi允许开发者通过正则表达式或Ant风格的路径定义,控制哪些URL可被授权用户访问。例如,所有用户可以访问登录页面,而只有特定用户可以访问特定的管理页面。这种控制方式使得系统能够灵活地管理不同级别的用户...
5. **会话管理**:Acegi提供了会话管理功能,如会话固定攻击防护、会话超时检测和并发会话控制,以防止恶意用户同时使用同一用户的多个会话。 6. **事件监听**:Acegi允许监听和处理安全相关的事件,如登录成功、...
9. **自动“记住我”认证**:允许用户在预设时间内无需重新认证。 10. **匿名认证**:允许所有调用自动采用特定的安全身份。 11. **Run-as认证**:允许在一个调用中以不同的安全身份进行。 12. **Java认证和授权服务...
首先,Acegi的主要目标是保护Spring应用免受非法访问,它提供了丰富的功能来实现用户认证、会话管理、权限控制以及安全相关的异常处理。Acegi的核心组件包括`AuthenticationManager`、`AccessDecisionManager`和`...
此外,Acegi还提供了Remember Me服务,允许用户在一段时间内无须重新登录,提高了用户体验。这个功能可以通过配置`RememberMeAuthenticationProvider`来实现。 总的来说,Spring Acegi Security提供了一套全面的Web...
3. **会话管理(Session Management)**:Acegi可以监控和管理用户的会话,防止会话固定攻击(Session Fixation)和会话超时。它还支持多因素认证,如结合硬件令牌增强安全性。 4. **过滤器链(Filter Chain)**:...
7. **注销功能**:Acegi Security提供了用户注销的功能,用户可以选择退出当前会话,清除所有相关的会话数据。 文档`acegi.doc`很可能包含了关于如何配置和使用这些功能的详细步骤,而`SSH.rar`可能包含了一个演示...
Acegi还提供了并发控制功能,可以限制同一用户账号在同一时间的登录数量。这在需要限制用户并发登录的场景下非常实用,例如在金融或高安全性系统中。通过配置`HttpSessionEventPublisher`监听器,Acegi可以监控新...
2. **授权(Authorization)**:在Acegi中,授权是指确定一个已认证的用户是否有权限访问特定的资源或执行某些操作。它可以基于角色、URL、方法或者更复杂的规则进行控制。 3. **会话管理(Session Management)**...
Acegi安全系统,是一个用于Spring Framework的安全框架,能够和目前流行的Web... 在Acegi安全系统中,需要被认证的用户,系统或代理称为"Principal"。Acegi安全系统和其他的安全系统不同,它并没有角色和用户组的概念。
3. **配置会话管理**:为了防止用户的重复登录或限制同一时间内的登录次数,需要配置会话控制器。 ### 核心代码解析 以下是对部分核心代码的分析: ```xml <bean id="authenticationManager" class="org.acegi...
Acegi 提供一组可在 Spring 应用上下文中配置的 Bean,通过这些 Bean 可以实现对用户访问的控制。在 Web 应用场景下,Acegi 使用 Servlet 过滤器来拦截请求,进行身份验证和权限检查。此外,Acegi 还支持通过 Spring...