今天把登录页面再完善一下,主要完成一下两个功能:注销和自动登录。
1.注销功能
注销功能很简单,只要将请求提交到j_spring_security_logout即可。
<a href="j_spring_security_logout">注销</a>
可以在applicationContext-security.xml中配置
<logout logout-success-url="/login.jsp" />
定义注销后返回的页面。
2.自动登录功能
有两种方式可以实现记住用户的能力。一种做法是利用浏览器端的 cookie。当用户成功登录之后,特定内容的字符串被保存到 cookie
中。下次用户再次访问的时候,保存在 cookie 中的内容被用来认证用户。默认情况下使用的是这种方式。使用 cookie
的做法存在安全隐患,比如攻击者可能窃取用户的 cookie,并用此 cookie 来登录系统。另外一种更安全的做法是浏览器端的 cookie
只保存一些随机的数字,而且这些数字只能使用一次,在每次用户登录之后都会重新生成。这些数字保存在服务器端的数据库中。如果希望使用这种方式,需要创建
一个数据库表,并通过 data-source-ref
属性来指定包含此表的数据源。
1)在数据可当中添加一张表
create table persistent_logins (username varchar(64) not null,
series varchar(64) primary key,
token varchar(64) not null,
last_used timestamp not null)
2)修改applicationContext-security.xml
在<http>当中添加
<remember-me data-source-ref="dataSource"/>
3)在登录页面中添加
<input type='checkbox' name='_spring_security_remember_me'/>两周内自动登录<br>
需要注意的问题:
1)对于firefox等多页面浏览器,在一个firefox进程中打开一个页面后关闭再打开,session信息仍然不变,容易造成没有添加<remember-me>发现也能自动登录的现象。
2)当点击注销后,服务器将删除存放在数据库当中的用户信息,自动登录将失效。
3)多个浏览器同时登录将导致服务器在数据库中存放多条登录信息,导致自动登录失效,并出现This session has been expired (possibly due to multiple concurrent logins being attempted as the same user
错误信息,解决方法是限制同一个用户只能有一个session信息。
<session-management>
<concurrency-control max-sessions="1" error-if-maximum-exceeded="true"/>
</session-management>
这样做有一个缺点:如果有人登陆的时候因为某些问题没有进行logout就退出了系统,那么他只能等到session过期自动销毁之后,才能再次登录系统。
分享到:
相关推荐
最近自学Spring Security,这里是我做的练习所产生的代码(SSM+Spring Security)包括一些注释等。
Spring_Security-3.0.1_中文自学教程
Spring Security 4.1 电子扫描版,仅供学习使用。
《JavaWeb整合开发完全自学手册》介绍如何整合Struts+Hibernate+Spring+Eclipse进行J2EE开发,所有实例都基于MyEclipseIDE开发,引领读者快速进入基于JavaWeb的J2EE应用领域。《JavaWeb整合开发完全自学手册》主要...
Spring5自学讲义
很好自学spring和hibernate的资源
自学Spring所产生的代码,包含IOC、AOP的入门以及进阶,Spring与数据库(MySQL)的交互。(该资源不仅包含我写的代码,一切Spring、aspect、jdbc等所需jar包都俱全,项目导入就能跑起来)
spring3.0mvc自学教程ppt+注解教程+注解实例+springmybatis教程+项目实例+中文api 初学(自学)着的不二法定,从入门到项目实例深入学习(浅-深)
spring揭秘自学用 王福强 高清版
自学文档 适用于初学者 内附经典案例并有详细的操作步骤
前几日自几看spring3.0就这么简单这本书时候留下来的东西,可见本身会有些许问题,但是笔者本身是小白,所以只是更基础适合新手,大神自动略过。ppt
Spring_MVC_3.0快速自学实战指南
在自学Spring Framework 开发参考手册2.5时做的学习笔记,其中在遇到手册上不能理解的地方的时候,在网上找了一些比较好的文档也放在了里面。
java自学之路java自学之路java自学之路java自学之路java自学之路java自学之路java自学之路java自学之路java自学之路java自学之路java自学之路java自学之路
书中的代码全可以下载到,是自学spring的好材料
Mybatis 最小依赖jar 不集成spring 联系版本,适合初学者自己写个小demo
在自学的过程中,小生不才,整理了一点狂神的笔记同大家分享,这是狂神说Spring的全部笔记及代码,后续还会有springmvc、mybatis、mybatis-puls等部分的笔记以及代码,小生会尽快整理出来!最后一个小小的提醒:关注...
Spring_3.0_MVC_简单自学教程(英文)
如果你打算自己琢磨学习spring,并要做些例子的话!应该能给您带来帮助