acegi并发控制httpsession

acegi控制并发httpsession

在一些应用场合,企业可能需要限制同一账号在同一时间登录到同一web应用的次数,即并发控制httpsession数量。比如同一时间只允许admin/password用户在服务区端存在一个或若干个活动的httpsession。

acegi内置了这一并发控制的支持,要使用这一支持,需要完成以下步骤:

1、在acegi的配置文件中做如下配置:

    <bean id="concurrentSessionFilter" class="org.acegisecurity.concurrent.ConcurrentSessionFilter">

 <property name="sessionRegistry" ref="sessionRegistry" />

 <property name="expiredUrl"><value>/hello.html</value></property>

<bean>

<bean id="sessionRegistry" class="org.acegisecurity.concurrent.SessionRegistryImpl" />

此外,别忘了将配置的concurrentSessionFilter过滤器添加到过滤器链中

2、一旦认证管理器成功认证了authentication请求,providerManager会立即调用conurrentSessionController验证当前用用户登录信息。

    所以要在acegi配置文件中添加如下配置:

<bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager">

...

<property name="sessionController" ref="concurrentSessionController">

</bean>

<bean id="concurrentSessionController" class="org.acegisecurity.concurrent.ConcurrentSessionControllerImpl">

<property name="maximumSession" value="1" /> <!--表示允许用户创建的最大并发session -->

<property name="sessionRegistry" ref="sessionRegistry" />

<property name="exceptionIfMaximumExceeded" value="false" /><!-- 表示并发数量已达到后是否抛出异常-->

在实际应用中,开发者往往会将exceptionIfMaximumExceeded属性设置为false,这也是较好的做法,这是因为很多浏览器用户往往不会显示退出已登录的web应用,而是直接将浏览器关闭。

3、在web.xml文件中配置如下监听器:

    <listener>

<listener-class>org.acegisecurity.ui.session.HttpSessionEventPublisher</listener-class>

    <listener>

通过上述过程我们即启用了httpsession并发控制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值