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

news2024/11/24 16:01:39

主要内容

  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页面内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/89558.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于VUE框架的二手书交易网站

开发工具(eclipse/idea/vscode等)&#xff1a;idea 数据库(sqlite/mysql/sqlserver等)&#xff1a;mysql 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a;用户功能如下&#xff1a; &#xff08;1&#xff09;二手书搜索&#xff1a;用户在输入框中输入二手书的名称等…

[附源码]Node.js计算机毕业设计翻转课堂微视频管理系统Express

5.1系统功能模块 翻转课堂微视频管理系统&#xff0c;在系统首页可以查看首页、课程信息、通知公告、微视频、试卷列表、翻转资讯、留言反馈、个人中心、后台管理等内容&#xff0c;如图5-1所示。 图5-1系统首页界面图 课程信息&#xff0c;在课程信息页面可以查看课程编号、课…

第二十一章 Prim算法与Kruskal算法(通俗证明与详细讲解)

第二十一章 Prim算法与Kruskal算法一、最小生成树二、prim算法1、算法思路2、算法模板&#xff08;1&#xff09;问题&#xff08;2&#xff09;模板&#xff08;3&#xff09;分析4、常见疑惑&#xff08;1&#xff09;与dijkstra算法的区别以及循环次数问题&#xff1a;&…

ASEMI肖特基二极管MBR20200FCT特征,MBR20200FCT应用

编辑-Z ASEMI肖特基二极管MBR20200FCT参数&#xff1a; 型号&#xff1a;MBR20200FCT 最大重复峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;200V 最大RMS电桥输入电压&#xff08;VRMS&#xff09;&#xff1a;140V 最大直流阻断电压&#xff08;VDC&#xff09…

Visual Studio配置c环境

Visual Studio配置c环境 Visual Studio配置c环境 1 下载Visual Studio 下载Visual Studio软件可以直接在其内进行c的运行&#xff0c;不需要配置。官网&#xff0c;其中社区版免费。 2 安装Visual Studio 2.1 VS把我们想使用到的开发语言和应用都已经归类好&#xff0c;我们…

Python学习基础笔记四十九——类的命名空间

1、创建一个类就创建了一个类的名称空间&#xff0c;用来存储类中定义的所有名字&#xff0c;这些名字称为类的属性。而类中可以定义两种属性&#xff1a; 静态属性&#xff1a;就是直接在类中定义的变量。 动态属性&#xff1a;就是定义在类中的方法。 class Course:langua…

直播基本流程【推流-播流-流媒体服务器】

直播基本流程 这里不涉及到业务相关 &#xff0c; 这里简要说明直播流程 推流端&#xff1a; 负责将本地的音视频数据推送至流媒体服务器 流程&#xff1a;音视频数据采集->编码->封装->协议封包 功能&#xff1a;美颜滤镜、音效处理、回音消除 播流端&#xff1…

SpringBoot2核心技术(核心功能)- 04、配置文件【4.1 yaml的用法 + 4.2 自定义类绑定的配置提示】

核心功能概览 1、文件类型 1.1、properties 同以前的properties用法 1.2、yaml 1.2.1、简介 YAML 是 “YAML Ain’t Markup Language”&#xff08;YAML 不是一种标记语言&#xff09;的递归缩写。在开发的这种语言时&#xff0c;YAML 的意思其实是&#xff1a;“Yet An…

猿如意中的【editorconfig-222.2889.3】工具详情介绍

一、工具名称 editorconfig-222.2889.3 二、下载安装渠道 editorconfig-222.2889.3 通过CSDN官方开发的【猿如意】客户端进行下载安装。 2.1 什么是猿如意&#xff1f; 猿如意是一款面向开发者的辅助开发工具箱&#xff0c;包含了效率工具、开发工具下载&#xff0c;教程文…

《Fluent Python》笔记 | 协程

生成器作为协程 协程是指一个过程&#xff0c; 这个过程与调用方协作&#xff0c; 产出由调用方提供的值。 协程使用的简单演示&#xff08;用作协程的生成器&#xff09;&#xff1a; >>> def simple_coroutine(): # 生成器函数 ... print(-> coroutine starte…

JavaScript系列之通过babel体验ES6模块化

文章の目录一、创建项目文件夹二、打开cmd窗口三、初始化项目四、安装依赖模块五、项目根目录创建文件六、在babel.config.js 文件中添加如下配置七、编写代码八、执行代码九、相关项目依赖写在最后一、创建项目文件夹 名称不要使用中文&#xff0c;不能使用 babel&#xff0c…

[附源码]计算机毕业设计的旅游景点管理系统的设计与实现Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis MavenVue等等组成&#xff0c;B/S模式…

VS Code —— 介绍如何配置快捷代码片段和一些自用插件

VS Code —— 介绍如何配置快捷代码片段和一些自用插件 《工欲善其事&#xff0c;必先利其器》—— 既然点进来了&#xff0c;麻烦你看下去&#xff0c;希望你有不一样的收获~ 一、配置代码片段 打开 VS Code&#xff0c;输入快捷键 Ctrl Shift p&#xff0c;打开面板&#…

继真人秀后的又一次大赛,万应低代码一路向前

12月8日&#xff0c;凛冬的长沙&#xff0c;比赛现场暖气充足&#xff0c;11 个参赛团队的队长正在台下跃跃欲试&#xff0c;本届“万应杯”低代码应用开发大赛已经开启月余&#xff0c;大家都很期待能在淘汰赛上一展身手。 他们手上的项目&#xff0c;涉及到建筑、园区、生鲜…

30、基于51单片机的数字电压表(ADC0809)(Proteus仿真+程序)

编号&#xff1a;30 基于51单片机的数字电压表&#xff08;ADC0809&#xff09; 功能描述&#xff1a; 本设计由51单片机最小系统ADC0809模块八路路模拟量输入模块12864显示模块 1、主控制器是89C52单片机 2、ADC0809模数转换器进行A/D转换&#xff0c;读取电压八路数据&…

现在转行码农的成本已经非常高了,别盲目转行..

转行码农一直是个比较火热的话题&#xff0c;也有很多读者咨询过这个问题&#xff0c;转成功的也不少&#xff0c;比如下面这位香港的同学&#xff1a; 这位朋友半年前就跟我聊过&#xff0c;他不太想干没有技术含量的体力活&#xff0c;一直在坚持自学&#xff0c;这也算如愿…

软件测试基础知识总结(面试临时抱佛脚)

之前有将基础的软件测试知识做了一个总结&#xff0c;但比较潦草&#xff0c;很多内容只是一笔带过&#xff0c;快到年底了&#xff0c;自己也有个写年终知识总结文档的计划&#xff0c;就将基础的理论知识重新整理一番。。。 有人问我&#xff0c;这些都是能搜索到的知识&…

65-82-springcloud-gateway-config-bus

65-82-springcloud-gateway-config-bus&#xff1a; Gateway gateway官网&#xff1a;https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/ 1、什么是gateway Gateway是在Spring生态系统之上构建的API网关服务&#xff0c;基…

c++引用

1.什么是c引用&#xff1f; 引用是c对c的重要扩充。c中新增了引用的概念&#xff0c;引用可以作为一个已定义变量的别名。 #include "stdafx.h" #include <iostream> using namespace std; // 1.引用的基本使用 void test01(){int a 10;// 给变量a取一个别名…

金仓数据库KingbaseES 归档日志清理

WAL是Write Ahead Log的简写&#xff0c;和Oracle的redo日志类似&#xff0c;在R3版本存放在data/sys_log中&#xff0c;R6版本以后在data/sys_wal目录&#xff0c;在数据库访问过程中&#xff0c;任何对数据块的修改都会记录到wal日志&#xff0c;并写入到wal文件保存到磁盘&a…