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必须配合模版来使用。

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

相关推荐
Zella折耳根1 小时前
复习篇-常用实用类
java
Zhan8611241 小时前
数据接口的序列号机制与丢包检测:西班牙行情数据IBEX指数实时行情接入笔记
大数据·数据结构·笔记·区块链
devilnumber7 小时前
Java 递归算法 详解 + 核心要点 + 实战运用 + 避坑指南
java·开发语言·算法
asdfg12589638 小时前
JavaBean是什么?怎么理解?有什么用途?
java·开发语言
dsyyyyy11019 小时前
JavaScript变量
开发语言·javascript·ecmascript
闪闪发亮的小星星9 小时前
开普勒三大定律
笔记
z落落10 小时前
C#WinForm 窗体切换与窗体传值(登录跳转案例)+WinForm 窗体传值(从上往下传、从下往上传)
开发语言·windows·c#
allway210 小时前
How to Echo Multiline to a File in Bash [3 Methods]
开发语言·chrome·bash
weixin_4624462310 小时前
手把手教你用 Bash 脚本自动更新 /etc/hosts —— 自动绑定网卡 IP 与节点名
开发语言·tcp/ip·bash
一个梦醒了10 小时前
安装git bash选项推荐
开发语言·git·bash