主要内容

  1. Spring Security 简介

  2. 第一个Spring Security项目

  3. UserDetailsService详解

  4. PasswordEncoder密码解析器详解

  5. 自定义登录逻辑

  6. 自定义登录页面

  7. 认证过程其他常用配置

  8. 访问控制url匹配

  9. 内置访问控制方法介绍

10.角色权限判断

11.自定义403处理方案

12.基于表达式的访问控制

13.基于注解的访问控制

14.RememberMe功能实现

15.Thymeleaf中Spring Security使用

16.退出登录

17.Spring Security 中CSRF

学习目标

知识点 要求
Spring Security 简介 掌握
第一个Spring Security项目 掌握
UserDetailsService详解 掌握
PasswordEncoder密码解析器详解 掌握
自定义登录逻辑 掌握
自定义登录页面 掌握
认证过程其他常用配置 掌握
访问控制url匹配 掌握
内置访问控制方法介绍 掌握
角色权限判断 掌握
自定义403处理方案 掌握
基于表达式的访问控制 掌握
基于注解的访问控制 掌握
Remember Me 功能实现 掌握
Thymeleaf中Spring Security使用 掌握
退出登录 掌握
CSRF 掌握

一、Spring Security简介

1.概括

Spring Security是一个高度自定义的安全框架。利用Spring IoC/DI和AOP功能,为系统提供了声明式安全访问控制功能,减少了为系统安全而编写大量重复代码的工作。

使用Spring Secruity的原因有很多,但大部分都是发现了javaEE的Servlet规范或EJB规范中的安全功能缺乏典型企业应用场景。同时认识到他们在WAR或EAR级别无法移植。因此如果你更换服务器环境,还有大量工作去重新配置你的应用程序。使用Spring Security 解决了这些问题,也为你提供许多其他有用的、可定制的安全功能。

正如你可能知道的两个应用程序的两个主要区域是“认证”和“授权”(或者访问控制)。这两点也是Spring Security重要核心功能。“认证”,是建立一个他声明的主体的过程(一个“主体”一般是指用户,设备或一些可以在你的应用程序中执行动作的其他系统),通俗点说就是系统认为用户是否能登录。“授权”指确定一个主体是否允许在你的应用程序执行一个动作的过程。通俗点讲就是系统判断用户是否有权限去做某些事情。

2.历史

Spring Security 以“The Acegi Secutity System for Spring” 的名字始于2003年年底。其前身为acegi项目。起因是Spring开发者邮件列表中一个问题,有人提问是否考虑提供一个基于Spring的安全实现。限制于时间问题,开发出了一个简单的安全实现,但是并没有深入研究。几周后,Spring社区中其他成员同样询问了安全问题,代码提供给了这些人。2004年1月份已经有20人左右使用这个项目。随着更多人的加入,在2004年3月左右在sourceforge中建立了一个项目。在最开始并没有认证模块,所有的认证功能都是依赖容器完成的,而acegi则注重授权。但是随着更多人的使用,基于容器的认证就显现出了不足。acegi中也加入了认证功能。大约1年后acegi成为Spring子项目。

在2006年5月发布了acegi 1.0.0版本。2007年底acegi更名为Spring Security。

二、第一个Spring Security项目

1.导入依赖

Spring Security已经被Spring boot进行集成,使用时直接引入启动器即可。

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId>
</dependency>

2.访问页面

导入spring-boot-starter-security启动器后,Spring Security已经生效,默认拦截全部请求,如果用户没有登录,跳转到内置登录页面。

在项目中新建login.html页面后

在浏览器输入:http://localhost:8080/login.html后会显示下面页面

默认的username为user,password打印在控制台中。当然了,每个人显示的肯定和我的不一样。

在浏览器中输入账号和密码后会显示login.html页面内容。

SpringSecurity[1]-SpringSecurity简介以及创建Spring Security第一个项目相关推荐

  1. pycharm创建我的第一个项目

    使用pycharm创建我的第一个项目 1 . Create New Project 2 . pycharm设置项目的保存位置(创建的是一个空项目). 3 . 添加python文件,右击项目文件夹 -- ...

  2. SpringSecurity系列文章 (一)Spring Security 认知

    在文章开篇先说说为何使用Spring Security,在新的公司中现在认证授权服务是通过Spring Security auth2进行认证的,原本没用过这个啊,只知道apche shiro 现在还有 ...

  3. springsecurity sessionregistry session共享_不用 Spring Security 可否?试试这个小而美的安全框架...

    写在前面 在一款应用的整个生命周期,我们都会谈及该应用的数据安全问题.用户的合法性与数据的可见性是数据安全中非常重要的一部分.但是,一方面,不同的应用对于数据的合法性和可见性要求的维度与粒度都有所区别 ...

  4. SpringSecurity系列(一) 初识 Spring Security

    1. 写在前面 Java 领域老牌的权限管理框架当属 Shiro 了,Shiro 有着众多的优点,例如:轻量.简单.易于集成等.当然 Shiro 也有不足,例如对 OAuth2 支持不够,在 Spri ...

  5. Spring Security 在互联网项目中的实战分享

    SpringBoot 和 Spring Cloud 中默认都是使用 Spring Security框架,这门技术非学不可.那么我们在企业中该如何灵活的运用它呢? 本场 Chat 将通过以下几个方面进行 ...

  6. 在github上创建自己的第一个项目仓库实录

    学会操作git和使用Github来管理代码是技术开发人员的必备基本功,在工作中越来越发现,熟练掌握好git这个利器对工作非常有帮助, 遂静心专门攻之. 下面是我在github上创建的第一个测试项目.详 ...

  7. ExtJs6.5.2新手入门——如何用sencha cmd创建自己的第一个项目

    博主自己也是一个刚开始学习ext的小白,学习新知识一定要记录下来,直接复制自己原来写的培训手册里的,希望能帮到刚接触ExtJs的你!--[作者:伊利蛋白钙yL  原文链接:http://www.cnb ...

  8. android studio创建构造方法,使用Android studio创建你的第一个项目

    1.创建HelloWorld项目 任何编程语言写出的第一个程序毫无疑问都会是Hello World,这已经是自20世纪70年代一直流传下来的传统,在编程界已成为永恒的经典,那么今天就来使用Androi ...

  9. Spring Security(一)- SpringSecurity 框架简介

    文章目录 一.SpringSecurity 框架简介 1. 概要 2. Spring Security 与 Shiro 对比 2.1 Spring Security 2.2 SpringSecurit ...

最新文章

  1. iOS 中 load 和 initialize的实现顺序
  2. 忽略这一点,人工智能变人工智障!
  3. python中def _init_是什么意思_Python中self和__init__的含义与使用
  4. 给AI一张高清照片,分分钟还你细节满满的3D人体模型,GitHub标星3.6k | 在线可玩...
  5. Node.js 把图片流送到客户端
  6. LeetCode 376. 摆动序列 中等难度
  7. 在数字图像处理中特征点是什么
  8. VMware——安装CentOS
  9. 前端学习(740):函数返回值注意事项
  10. win7电脑文件夹属性没有安全选项的解决方法
  11. 搭建BP神经网络(完整代码快速上手)
  12. 超强的用linux命令勾搭美女
  13. access根据所属院系修改学号_2012年计算机等考二级Access模拟试题四
  14. 午休,要有午休床,也要有毛毯
  15. Linux搭建KMS激活服务器
  16. iOS加速计和陀螺仪
  17. python spss写论文_自从用 spss 写了论文。。。。
  18. 邮箱app哪个好用,能在手机用的邮箱app推荐下
  19. IE主页被恶意软件劫持,360卫士无法修改
  20. 为什么中国神仙比较负责任?

热门文章

  1. fuzz测试之syzkaller(linux kernel fuzz)
  2. Microsoft Excel 文件未完全加载
  3. Metagenome Assembly - Part1:基于德布莱英图(De Bruijn graph)的宏基因组de novo拼接
  4. Python二级必考函数.format()函数
  5. IC-14W网络IC卡读写器_银河麒麟桌面操作系统V10适配测试报告
  6. 【Python黑科技】下载保存QQ头像图片(保姆级图文+实现代码)
  7. oracle数据库升级失败怎么办,【案例】Oracle报错ORA-00918 数据库升级后遇到SQL BUG 5368296...
  8. Elasticsearch unassigned shards的解决之道
  9. ShellExecuteEx完美封装,程序提权执行,脚本vbs、bat、exe均可执行
  10. Exception RunTimeException