Spring Security使用总结一,简单的引用Spring Security,坐着火箭就入门了

news2025/4/3 12:39:09

最近因为一些不能言语的原因,研究了一下Spring Security。因为感觉在使用上来说难度不大,所以把我研究的使用过程总结一下,放上来供大家学习研究思考进步的。我的思路大致就是,一个东西拿过来,先研究怎么使用,就跟我买了一个蓝牙耳机,第一步先看说明书,有的时候凭借多年经验,不用看说明书,就可以先用起来,用起来之后,再研究有什么新奇的功能,如果我是电子制造的,我可能会给它拆开看看里面是怎么回事,所以使用看上来没啥用,但其实有大用。

我的使用过程大致分为八步:

第一步:简单的依赖Spring Security

第二步:使用数据库,我主要是用来存储用户信息

第三步:使用模板,制作一个注册页面,用来用户注册

第四步:编写注册相关服务

第五步:加密相关内容

第六步:用户登录与认证

第七步:发放令牌,访问资源

第八步:授权,不同角色访问不同资源

废话说完了,开始搞,先创建一个java项目,先依赖springboot的web和Security的两个包

<dependencies>
    <!--SpringBoot Web服务-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>2.7.4</version>
    </dependency>

    <!--SpringSecurity启动器-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
        <version>2.7.4</version>
    </dependency>
</dependencies>

启动代码也是最简单的代码,只需要一个Spring的启动类和Controller类就可以,连配置文件都不需要

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

HelloWorldController

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloWorldController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello";
    }
}

启动的时候security会自动生成一个密码,这个密码就是初始的登录认证用的,就是随机的一个UUID。

启动成功之后,因为没有配置文件的原因,所以默认端口号是8080,访问localhost:8080/hello ,会弹出下面这个页面

默认用户名是user

密码就是上面那个被万箭头所指的那个和UUID很像的那么一串字符串,复制进去之后,点击Sign in按钮就会进入到这个页面,也就说明你的第一步已经成功了!

这个项目的结构就像下面这样简单,除了pom中依赖了Security之外,你甚至都看不到security的影子。

细节

虽然是最简单的一个security的使用,但是里面还是会有一些值得注意的细节,这是我在学习使用的时候遇到的问题,在这里指出来让大家作为前车之鉴。

Controller类上面的注解只能使用RestController,不能使用Controller,如果你使用了Controller注解,按照上面的步骤,你会得到下面这个页面。

出现这种情况的原因很简单,这就是Controller注解和RestController注解的区别

@RestController类中的所有方法只能返回String、Object、Json等实体对象,不能跳转到模版页面。@RestController相当于@ResponseBody + @Controller。

@Controller类中的方法可以直接通过返回String跳转到jsp、ftl、html等模版页面。在方法上加@ResponseBody注解,也可以返回实体对象。

@Controller 用来响应页面,@Controller必须配合模版来使用。

这个区别在后面的使用中也会用到,在这里就不详细说明了。

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

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

相关文章

数据库进阶教学——事务

目录 一、事务简介 二、事务操作方式 1、设置事务提交方式 1.1、命令 1.2、示例 2、开启事务 2.1、命令 2.2、示例 三、事务四大特性 四、并发事务问题 五、事务隔离级别 5.1、命令 5.2、示例 5.2.1、脏读 5.2.2、不可重复读 5.2.3、幻读 一、事务简介 事务是…

亚马逊、美客多卖家测评:如何建立养号团队实现运营化式测评?

大家好&#xff0c;我是跨境电商测评养号7年从事经验的珑哥。养号环境软件开发&#xff0c;深度解决各跨境平台矩阵养号防关联、砍单、F号问题。关注珑哥解决更多跨境养号测评问题。 测评&#xff0c;相信这个词对于大部分跨境卖家来说&#xff0c;想必都不陌生&#xff0c;因…

voronoi diagram(泰森多边形) 应用 - Good Manners

欢迎关注更多精彩 关注我&#xff0c;学习常用算法与数据结构&#xff0c;一题多解&#xff0c;降维打击。 voronoi 图求解点击前往 题目链接&#xff1a;https://vjudge.net/problem/URAL-1504 题目大意 有一个桌子&#xff0c;形状是圆形。 桌上放着很多蛋糕&#xff0c…

Python模块psutil:系统进程管理与Selenium效率提升的完美结合

前言 在前面编写一个Selenium的自动化程序时候&#xff0c;发现一个问题。 因笔记本配置较为差&#xff0c;所以每次初始化Selenium的WebDriver都会非常慢&#xff0c;整个等待过程是不友好的。 所以我就想到&#xff1a; 在程序中初始化一个全局的WebDriver对象&#xff0c…

Git Rebase 优化项目历史

在软件开发过程中&#xff0c;版本控制是必不可少的一环。Git作为当前最流行的版本控制系统&#xff0c;为开发者提供了强大的工具来管理和维护代码历史。git rebase是其中一个高级特性&#xff0c;它可以用来重新整理提交历史&#xff0c;使之更加清晰和线性。本文将详细介绍g…

1060 爱丁顿数

一.问题&#xff1a; 英国天文学家爱丁顿很喜欢骑车。据说他为了炫耀自己的骑车功力&#xff0c;还定义了一个“爱丁顿数” E &#xff0c;即满足有 E 天骑车超过 E 英里的最大整数 E。据说爱丁顿自己的 E 等于87。 现给定某人 N 天的骑车距离&#xff0c;请你算出对应的爱丁…

【计算机网络笔记】传输层——TCP特点与段结构

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

Springboot JSP项目如何以war、jar方式运行

文章目录 一&#xff0c;序二&#xff0c;样例代码1&#xff0c;代码结构2&#xff0c;完整代码备份 三&#xff0c;准备工作1. pom.xml 引入组件2. application.yml 指定jsp配置 四&#xff0c;war方式运行1. 修改pom.xml文件2. mvn执行打包 五&#xff0c;jar方式运行1. 修改…

深入了解汽车级功率MOSFET NVMFS2D3P04M8LT1G P沟道数据表

汽车级功率MOSFET是一种专门用于汽车电子领域的功率MOSFET。它具有高电压、高电流、高温、高可靠性等特点&#xff0c;能够满足汽车电子领域对功率器件的严格要求。汽车级功率MOSFET广泛应用于汽车电机驱动、泵电机控制、车身控制等方面&#xff0c;能够提高汽车电子系统的效率…

sqlserver字符串拼接

本文主要介绍了sqlserver字符串拼接的实现&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值。 1. 概 在SQL语句中经常需要进行字符串拼接&#xff0c;以sqlserver&#xff0c;oracle&#xff0c;mysql三种数据库为例&#…

Flink源码解析四之任务调度和负载均衡

源码概览 jobmanager scheduler:这部分与 Flink 的任务调度有关。 CoLocationConstraint:这是一个约束类,用于确保某些算子的不同子任务在同一个 TaskManager 上运行。这通常用于状态共享或算子链的情况。CoLocationGroup & CoLocationGroupImpl:这些与 CoLocationCon…

10月发布的5篇人工智能论文推荐

JudgeLM: Fine-tuned Large Language Models are Scalable Judges https://arxiv.org/pdf/2310.17631.pdf 由于现有基准和指标的限制&#xff0c;在开放式环境中评估大型语言模型(llm)是一项具有挑战性的任务。为了克服这一挑战&#xff0c;本文引入了微调llm作为可扩展“法官…

解决Couldn‘t find meta-data for provider with authority

今天在复用之前写的安装APK的相关代码时发生了报错&#xff0c;那是因为安卓高版本需要新增FileProvider 新增file_paths <?xml version"1.0" encoding"utf-8"?> <paths xmlns:android"http://schemas.android.com/apk/res/android"…

一文读懂以太坊坎昆升级后 Danksharding 扩容路线

以太坊 EIP-4844 是坎昆升级的核心内容&#xff0c;它引入了一种全新的交易类型&#xff08;blob 携带交易&#xff09;以减少以太坊交易费用。blob 携带交易与常规以太坊交易一样&#xff0c;但有一些额外数据被称为 blob。与当前 calldata 存储交易数据不可变和内存只读相比而…

wordpress如何存储远程附件到fss

管理员登录wordpress ,插件---安装插件--搜索"Hacklog Remote Attachment",进行安装并启用 . 设置中找到 Hacklog远程附件.点击进入选项设置. 按照下图填写fss相关参数.这些信息可以在fss详情中查看.目录路径如果没有请先在fss中创建. 4.设置完毕保存,接下来就…

佳易王桌球室台球厅计时计费电脑收费管理系统软件试用版V18.0下载

佳易王桌球室台球厅计时计费电脑收费管理系统软件试用版V18.0下载 一、佳易王桌球棋牌计时计费软件部分功能简介&#xff1a; 1、计时计费功能 &#xff1a;开台时间和所用的时长直观显示&#xff0c;每3秒即可刷新一次时间。 2、销售商品功能 &#xff1a;商品可以绑定桌子…

天天都能买买买,但双11不凑热闹我浑身难受

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 姝琦、卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦Midjourney 产品统筹 / bobo 场地支持 / 声湃轩北京录音间 有人说满足情绪需求是消费主义的一个重要特征&#xff0c;甚至堪称商家的消费升级歪招。 是吗&…

SpringSecurity+JWT+Redis实现前后端分离认证与授权

spring security的简单原理&#xff1a; SpringSecurity有很多很多的拦截器&#xff0c;在执行流程里面主要有两个核心的拦截器 登陆验证拦截器AuthenticationProcessingFilter 资源管理拦截器AbstractSecurityInterceptor 但拦截器里面的实现需要一些组件来实现&#xff0c;…

Windows系统搭建网盘神器filebrowser结合内网穿透实现公网访问

Windows系统搭建网盘神器filebrowser结合内网穿透实现公网访问 文章目录 Windows系统搭建网盘神器filebrowser结合内网穿透实现公网访问前言1.下载安装File Browser2.启动访问File Browser3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3…

基于安卓Android的校园快药APP-药店app

项目介绍 本文介绍了校园快药APP软件开发建设的意义和国内外发展现状&#xff0c;然后详细描述了所开发手机APP的可行性分析&#xff0c;并分析了手机APP所要实现的功能。因为校园快药设施较多&#xff0c;而且人口密集&#xff0c;不能更好的管理校园快药&#xff0c;造成需要…