SecurityContext保存在HttpSession中,当用户退出系统时必须清除之,否则SecurityContext将一直保存在HttpSession中,需要等到Session过期后才会被清除,这将造成额外的内存消耗。从另外一个方面说,在退出系统时常常需要执行一些相关的操作,如记录用户退出系统的日志、将登录信息保存到Cookie中等。
Acegi为完成以上一系列由退出系统引发的操作,专门提供了一个退出过滤器:org.acegisecurity.ui.logout.LogoutFilter,它允许我们通过配置完成相关的操作:
代码清单 11 applicationContext-acegi-plugin.xml
退出系统后置处理配置
<bean id="filterChainProxy"
class="org.acegisecurity.util.FilterChainProxy">
<property name="filterInvocationDefinitionSource">
<value>
…
/**=httpSessionContextIntegrationFilter,authenticationProcessingFilter,logoutFilter ①
</value>
</property>
</bean>
<bean id="logoutFilter" class="org.acegisecurity.ui.logout.LogoutFilter">②退出系统过滤器
<constructor-arg> ②-1退出系统前需要执行的操作
<list>
<bean class="org.acegisecurity.ui.logout.SecurityContextLogoutHandler" />
</list>
</constructor-arg>
<constructor-arg value="/index.jsp" />②-2退出系统后转向的URL
②-3用于响应退出系统请求的URL
<property name="filterProcessesUrl" value="/j_acegi_logout"/>
</bean>
…
在①处,我们在过滤器链中添加一个logoutFilter,它负责处理用户退出系统的操作。退出系统过滤器需要以下三方面的信息:
1) 哪一个URL是退出系统的HTTP请求,这通过filterProcessesUrl属性指定,②-3所示。LogoutFilter默认的退出系统URL即是“/j_acegi_logout”,这里显式进行配置是为了说明可以根据需要进行调整;
2) 退出系统时需要执行哪些处理器,通过LogoutFilter的构造函数指定,如②-1所示。处理器必须实现org.acegisecurity.ui.logout.LogoutHandler接口,Acegi为该接口提供了两个实现类,分别是SecurityContextLogoutHandler和 TokenBasedRememberMeServices,前者将SecurityContext从HttpSession中删除,而后者将Anthentication中的用户名/密码保存到客户端的Cookie中,以便下次用户访问系统时直接通过Cookie中的用户名/密码进行自动登录。我们将在下一节学习到TokenBasedRememberMeServices的知识。
3) 退出系统后转向哪个URL,通过构造函数参数指定,如②-2所示。
配置好退出系统过滤器后,在需要在系统页面中提供一个退出系统的操作链接:
<A href="<c:url value="/j_acegi_logout"/>">退出系统</A>
注意粗体所示代码代表退出系统所对应的URL,它必须和LogoutFilter的filterProcessesUrl属性一致。这样,当用户点击页面中的“退出系统”链接后,LogoutFilter拦截这个URL请求,并调用SecurityContextLogoutHandler将SecurityContext从HttpSession中清除掉,最后转向/index.jsp页面。
分享到:
相关推荐
开发SIEMENS 810D的后置处理程序时,需要考虑以下几个方面: 1. **理解SIEMENS 810D的指令格式**:熟悉该系统的指令集,包括G代码和M代码的具体含义。 2. **分析机床配置文件.PST**:.PST文件包含了机床的基本配置...
- **后置条件**:读者完成操作后退出系统。 此用例通过模拟读者在图书馆借阅书籍的全过程,展示了系统的功能性和交互性。其中,系统对图书信息的实时查询、借书状态的判断(可借或不可借)、以及对逾期归还图书的...
此外,登录/注销功能同样被详细定义,确保用户能够顺利进入或退出系统。 在类设计中,每个类都包含了其属性和方法。例如,user类包含用户名、密码、电话、地址等属性,以及相应的操作;dish类包含菜名、价格、描述...
本文详细阐述了理解二维图形、建立加工模型、确定加工工艺、生成刀具轨迹、加工仿真、后置处理、输出加工代码等的数控加工过程。 在理解二维图形的基础上,可以利用CAD提供的绘图功能和实体造型功能,将设计元素...
说明:员工退出系统界面,结束交互。 基本事件流: 用户关闭工资管理系统。 2.2 参与者:系统管理员 2.2.1 Use-Case 4:系统管理员登陆 用例名称:系统管理员登陆 用例 ID:No.4 说明:系统管理员登陆系统,...
- 后置条件:用户退出系统 2. **“图书信息管理系统”用例图** - 行为者:管理员 - 前置条件:管理员登录系统 - 事件流: - 管理员登录、管理图书信息、用户信息、通知功能 - 对图书的采购、用户借阅情况的...
系统根据采购员的要求处理和进行进货 | | 可选操作流程 | 2中如果采购员要求无法得到满足,则系统拒绝本次要求并且予以提示 | | 包含用例 | 无 | | 扩展用例 | 无 | - **用例“登录”的描述** | 描述项 | ...
- 目标:用户退出系统。 - 流程:用户点击注销按钮,系统注销账户并退出。 - 前置条件:用户已登录。 - 后置条件:用户需重新输入账户密码信息进行下次登录。 4. **用户信息修改**: - 目标:用户成功修改个人...
级别子功能活动者用户状态只定义了初始路径前置条件无后置条件主路径用户登录浏览服务信息完成浏览可选路径用户中途退出,返回其他页面例外路径无 家政服务管理系统的设计与实现旨在利用面向对象建模技术和统一建模...
每个用例都明确了前置条件和后置条件,如登陆系统无前置条件,而选课完成后学生可以选择安全退出。 2. **顺序图**:顺序图着重于展示对象间的交互顺序,以及这些交互如何响应消息。报告中提到了两个顺序图示例:...
- 功能1(具体子功能1):详细描述了功能的执行者、优先级、前置条件、后置条件、正常流程和异常处理机制。 - 功能2(具体子功能2):同样包括功能描述、执行者、优先级等关键要素。 四、软件非功能需求 1. 可靠...
**后置条件**:读者完成操作并退出系统。 **扩展点**:无 --- ##### 2. “图书信息管理系统”用例图 **主要行为者**:管理员 **前置条件**:管理员打开图书信息管理系统 **事件流**: 1. **主要事件流** - ...
7. **系统管理**:提供用户登录、用户角色和权限的管理,以及系统的安全退出和重新登录,确保系统的稳定运行和数据安全。 【系统用例建模】 系统用例建模是将系统功能需求转化为参与者与系统交互的具体场景。在...
为了防止全局f值干扰下一次工作,用户可以通过三种方式关闭它:手动设为0、退出软件或执行后置。 此外,HF系统还有“块改补偿f值”、“块批量引线”和“块引线消除”等功能。“块改补偿f值”允许批量修改图形的引入...
- UC03 退出系统:成功登陆的学生退出系统。 - UC05 密码找回:在成功打开服务器且密码丢失的情况下,找回密码。 - 新增用例:模拟订餐系统,包括订餐(UC01)、取消订单(UC02)、编制菜单(UC03)、打印订餐名单...
- 读者完成操作后退出系统。 ##### 2. “图书信息管理系统”用例图 **行为者**: - 主要行为者:管理员 **前置条件**: - 管理员已打开图书信息管理系统 **事件流**: 1. **主要事件流**: - 2.3.1.1 管理员...
- - `Exit()`:退出系统,清理账单和详单对象,结束会话。 5. **前置条件和后置条件**: - 前置条件是执行一个操作之前必须满足的条件,后置条件是在操作完成后系统的新状态。例如,`Checkin()`的前置条件是服务...
下班操作则涵盖数据备份、系统退出和设备安全关闭。正常过车操作中,包括车辆驶入识别、自动扣费、栏杆抬起放行等流程,同时特情处理部分涵盖了无标签、无卡、黑名单车辆等特殊情况的处理方法。强制落杆功能用于特殊...
**后置条件**:系统管理员进行系统管理,包括但不限于用户管理、项目评分计算公式管理、考核表下发、奖惩经费统计与管理、考核结果统计与分析以及部门人员管理等。 **基本操作流程**: 1. 执行系统信息的增、删、改...
增加了"直接运行窗口"的退出功能(Escape键) 在步进状态下加入按钮动作 对刀窗口在参数输入校验错误时不再执行 改进了限位释放窗口显示内容,并且自动切换到JOG方式 V5.4.20 临时修改紧停位指令进行了修正:在...