`
leman_zk
  • 浏览: 23950 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

【自学Spring Security】之完善登录页面

    博客分类:
  • SSH
 
阅读更多

     今天把登录页面再完善一下,主要完成一下两个功能:注销和自动登录。

     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-3.0.1_中文自学教程.pdf

    ### Spring Security 3.0.1 中文自学教程知识点概览 #### 一、Spring Security 简介 ##### 1.1 Spring Security 是什么? Spring Security 是一款强大的、高度可定制的身份验证与授权框架。它能够帮助开发者保护...

    Spring Security 4.1 中文文档@www.java1234.com.pdf

    版本历史是学习框架的重要一环,Spring Security自2003年推出以来,经过多个版本的迭代和改进,功能不断完善。例如,Spring Security 4.1版本在安全性配置上有了显著的提升,尤其是在Web应用程序安全性和授权方面...

    blog项目自学.7z

    博客项目自学教程主要涵盖了SpringBoot、Thymeleaf、PageHelper和SpringSecurity四个核心技术和框架。下面将分别详细解释这些技术及其在项目中的应用。 **SpringBoot** SpringBoot是由Pivotal团队提供的全新框架,...

    springlive(共11章)

    《SpringLive》是一本专为初学者设计的Spring框架入门经典教材,涵盖了Spring框架的核心概念和技术,共计11个章节。这本书旨在帮助读者快速掌握Spring框架,并能够运用到实际项目中去。通过阅读本书,你可以深入理解...

    小马spring视频源码

    6. **Spring Security**:对于涉及到安全性的话题,源代码可能包含Spring Security的配置和认证授权示例。 通过深入研究这些源代码,开发者可以更好地理解Spring框架的工作原理,提升自己的技能,并且能够应用到...

    Spring-Professional-Certification-Study-Guide.pdf

    依赖注入(DI)是Spring的核心原则之一,它实现了控制反转(IOC),这样对象就不需要自己创建或管理依赖关系,而是通过依赖注入由Spring容器管理。这一部分是Spring框架的基本概念,也是Spring认证考试的重要组成...

    SPRING技术内幕+深入解析SPRING架构与设计 55M(下载地址)

    - Spring Security的集成与配置。 - Spring Cloud微服务框架的入门与实践。 - Spring Batch的大规模批处理任务管理。 9. **阅读源代码的方法论**: - 如何有效地阅读和理解复杂的源代码。 - 分析源代码时需要...

    spring5学习相关资料.rar

    在自学Spring5时,可以先从官方文档入手,理解每个模块的基本概念和用法。然后通过编写简单示例来实践,例如创建一个Spring MVC的Hello World应用,或者使用Spring Boot快速搭建一个Web服务。随着对Spring的理解加深...

    spring-sample:Spring 自学示例项目

    7. **Spring Security**:如果项目涉及到用户认证和授权,Spring Security是强大的解决方案。虽然"spring-sample"可能未涵盖这部分内容,但了解其基本概念和用法对提升应用安全性至关重要。 通过深入研究"spring-...

    spirng5自学项目笔记

    在"Spring5自学项目笔记"中,我们将会深入探讨Spring框架的多个关键特性,包括IoC(Inversion of Control)容器、依赖注入、AOP(Aspect Oriented Programming)以及Spring Boot和Spring MVC等。 1. **Spring IoC...

    自学管理系统

    - 安全控制:Spring Security可以集成到系统中,提供认证(Authentication)和授权(Authorization)功能,确保只有合法用户能够访问特定资源。 - 模板引擎:如FreeMarker或Thymeleaf,用于动态生成HTML页面,减少...

    Spring学习笔记.zip

    Spring框架是Java开发中最常用的轻量级开源框架之一,它以其强大的依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)能力而著名。Spring框架提供了一个全面的企业级应用程序...

    Spring入门书籍

    《Spring入门书籍》是一本专为初学者设计的教程,旨在帮助读者快速掌握Spring框架的基础知识,从而在Java开发领域奠定坚实的基础。...无论是自学还是作为课堂教学辅助材料,这都是一本极具价值的Spring学习资源。

    spring boot 各种实战应用电子书+课程源码

    1. **起步依赖(Starter Dependencies)**:Spring Boot 的核心特性之一就是起步依赖,它允许开发者通过添加特定的Maven或Gradle依赖来快速引入所需的功能模块,如Web、Data JPA、Security等。 2. **自动配置(Auto...

    S2SI_course_security_xml

    这个是目前比较新的版本struts2.2.3.8,spring3.0.5,spring security3.0.5,ibatis2.7.4 整合,并且附带所用到的jar包及对应的MySQL数据脚本,绝对好例子,这是本人自学时自己摸索弄出来的,特此奉献给正在苦恼的...

    Java Springboot入门自学笔记

    本入门自学笔记将带你一步步了解并掌握Spring Boot的核心概念和实践技巧。 ### 01 SpringBoot简介 #### 1.1 Spring Boot 的优势 - **简化的起步**:Spring Boot 提供了起步依赖(starter),可以通过添加相应的Maven...

    基于Spring Boot的在线图书管理系统课程设计与开发

    系统设计采用分层架构,包括控制器层、服务层、持久层和实体层,通过Spring Data JPA、MyBatis等技术实现数据库操作,并结合Spring Security加强系统安全性。 适合人群:计算机相关专业在校学生、初级Java Web开发...

    java自学之路num1

    Java自学之路是一个全面掌握Java技术体系的过程,涵盖了从基础到高级的多个方面。以下是对标题和描述中涉及知识点的详细说明: 1. **J2SE**:Java标准版,是Java开发的基础,主要包括面向对象编程的三大特性:封装...

    用于自考的网站

    因此,这个网站可能采用了Spring Security框架来保护用户登录和信息查询过程,同时使用H2数据库存储自考相关的数据,如考生信息、考试科目、考试时间等。 【标签】:“自考 静态页面” 这里的"静态页面"意味着网站...

    SpringBoot项目-瑞吉外卖功能完善版

    开发者通过自学黑马程序员在B站上的瑞吉外卖课程,并在此基础上对未实现的功能进行了补充和完善。 Spring Boot是Spring框架的一个简化版,它内置了常见的配置,使得开发者能够快速搭建应用,而无需繁琐的配置工作。...

Global site tag (gtag.js) - Google Analytics