news 2026/5/1 5:00:25

SpringSecurity入门

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringSecurity入门

SpringSecurity简介

  • SpringSecurity是一个功能强大且高度可定制身份验证和访问的控制框架;
  • 它是用于保护基于Spring的应用程序的实际标准;
  • 可以将java应用程序提供身份验证和授权。

安全技术方案对比

Shiro是一个强大且灵活的开源框架,能够非常清楚的处理认证,授权,管理会话以密码加密

  • 易于理解的Java Security API;
  • 简单的身份认证(登录),支持多种数据源(JDBC,ActiveDirectory等);
  • 对角色的简单的鉴权(访问控制),支持细粒度的鉴权;
  • 支持一级缓存,以提升应用程序的性能;
  • 内置的基于POJO企业会话管理,适用于Web以及非Web的环境;
  • 异构客户端会话访问;
  • 非常简单的加密API;
  • 不跟任何的框架或者容器捆绑,可以独立运行。

SpringSecurity

  • 除了不能脱离Spring,shiro的功能其都有;
  • 而且Spring Security对Oauth,OpenID也有支持,Shrio则需要自己手动实现;
  • Spring Security的权限细粒度更高。

Spring Security框架功能简介

  1. 认证:用户登录,解决的是"你是谁?";
  2. 授权:判断用户拥有什么权限,可以访问什么资源,解决的是"你能干什么"?
  3. 安全防护,防止跨站请求,session攻击等。

Spring Security应用场景

  1. 用户登录,传统基于web开发的项目的登录功能;
  2. 用户授权,在系统中用户拥有那些权限操作;
  3. 单一登录,一个账号只能在同一时间只能在同一个地方进行登录,如果在其他地方进行二次登录,会删除之间的登录操作;
  4. 集成cas,做单点登录,即多个系统只需要登录一次,无需重复登录;
  5. 集成oauth2,做登录授权,可以用于app登录和第三方登录(QQ,微信等),也可以实现cas的功能。

SpringSecurity入门案例

首先我们需要添加maven依赖

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.guslegend</groupId> <artifactId>SpringSecurityDemo</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 引用spring security依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>

编写controller

@RestController public class SecurityTestController { @GetMapping("/hello") public String hello() { return "Hello World!"; } }

但是当我们访问这个接口时,会自动跳转到http://localhost:8080/login。

通过分析网页结构我们可以知道其实由以下几个部分组成:

  • 表单的提交方式和路径:post/login
  • input输入项的name值:usernamepassword
  • 隐藏域input的name:值为:_csrfvalue值为d4329889-796a-447a-9d08-69e56bc7c296

还有一个问题,我们在此前并没设计用户名和密码,甚至连数据库都没有!

我们应该怎么样才可以登录进去呢?

我们通过查看系统的日志,发现其用户名是user,密码是909aee59-ec25-4808-bcac-f3b3a82a7aec

将用户名和密码输入,发现访问成功,这样最基础的SpringSecurity的案例就成功了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 17:30:41

微信机器人消息处理终极指南:从零构建智能响应系统

微信机器人消息处理终极指南&#xff1a;从零构建智能响应系统 【免费下载链接】wechaty 项目地址: https://gitcode.com/gh_mirrors/wec/wechaty 想要开发一个能够智能处理各类微信消息的机器人吗&#xff1f;微信机器人开发框架Wechaty提供了完整的消息处理解决方案&…

作者头像 李华
网站建设 2026/4/23 11:36:24

终极指南:Art Design Pro后台管理系统快速配置与核心功能解析

终极指南&#xff1a;Art Design Pro后台管理系统快速配置与核心功能解析 【免费下载链接】art-design-pro 这是一个基于 Vue3、TypeScript、Vite 和 Element-Plus 精心打造的后台管理系统模板&#xff0c;专注于用户体验和视觉设计。 项目地址: https://gitcode.com/GitHub_…

作者头像 李华
网站建设 2026/4/17 3:57:22

BeeWorks:不止于通讯,一体化平台如何让企业协作化繁为简?

我们早已习惯了在不同的应用间跳跃&#xff0c;让工作被工具割裂。BeeWorks 的出现&#xff0c;正是为了终结这种状态。它并非又一个简单的聊天软件&#xff0c;而是一个将 即时通讯、音视频会议与办公协作深度整合的一体化企业级平台。01 一体化入口&#xff0c;告别应用孤岛想…

作者头像 李华
网站建设 2026/4/29 4:02:44

uPlot突破性实战:高性能图表库在业务场景下的极致应用

uPlot突破性实战&#xff1a;高性能图表库在业务场景下的极致应用 【免费下载链接】uPlot &#x1f4c8; A small, fast chart for time series, lines, areas, ohlc & bars 项目地址: https://gitcode.com/gh_mirrors/up/uPlot 当你面对海量实时数据需要可视化时&a…

作者头像 李华
网站建设 2026/4/29 3:57:30

ADC采样原理与摇杆应用

单片机是典型的数字系统&#xff0c;只能处理数字信号。然而&#xff0c;现实世界中的温度、压力等物理量&#xff08;模拟量&#xff09;&#xff0c;需经传感器转换为连续的电压/电流信号。为了让数字系统能够处理这些模拟信号&#xff0c;就必须进行模数转换。本章将学习这一…

作者头像 李华
网站建设 2026/4/20 12:48:09

融合地理智能与AI:构建下一代企业决策系统的完整指南

融合地理智能与AI&#xff1a;构建下一代企业决策系统的完整指南 【免费下载链接】openlayers OpenLayers 项目地址: https://gitcode.com/gh_mirrors/op/openlayers 在当前数字化转型浪潮中&#xff0c;企业决策正面临前所未有的复杂性。传统的地理信息系统已无法满足现…

作者头像 李华