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

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

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

第一步:简单的依赖Spring Security

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

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

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

第五步:加密相关内容

第六步:用户登录与认证

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

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

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

XML 复制代码
<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类就可以,连配置文件都不需要

java 复制代码
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

java 复制代码
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必须配合模版来使用。

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

相关推荐
星恒随风13 小时前
MySQL 从零入门(五):MySQL 内置函数详解——日期、字符串、数学函数与实战案例
linux·数据库·笔记·sql·mysql
金銀銅鐵13 小时前
带您看懂字节码指令(二):空循环里有什么
java·后端·ai编程
§ꦿCFོ༉14 小时前
嵌入式八股文—C语言入门学习(四)
c语言·开发语言·学习
投图匠14 小时前
十种不同风格的 CTP接口 框架
开发语言·python
吴名氏.15 小时前
Java转AI Agent教程(第十三周)混合检索与重排
java·数据库·人工智能·ai·ai agent
.痞老板.16 小时前
java ee--多线程(进阶)
java·java-ee
2603_9696948516 小时前
【JavaWeb学习记录】MyBatis核心知识点与实战笔记:从入门到动态SQL
笔记·sql·学习·mysql·mybatis·javaweb·学习方法
可乐ea16 小时前
智能体记忆该拆成几层:笔记、记忆表示与注入上下文
服务器·数据库·笔记·ai智能体·提示词工程·上下文工程·记忆系统
深入云栈17 小时前
Netty 4.2.x 源码深度解析 (二十三):ByteBuf 核心设计 —— 索引、类型与零拷贝
java·后端·架构
Jackzhang17 小时前
[运维排障实录] 第一次遇到 502 别急着重启:按「一条线」把问题查清楚
spring boot