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

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

相关推荐
iCxhust35 分钟前
c# U盘映像生成工具
开发语言·单片机·c#
yangzhi_emo1 小时前
ES6笔记2
开发语言·前端·javascript
界面开发小八哥1 小时前
「Java EE开发指南」如何用MyEclipse创建一个WEB项目?(三)
java·ide·java-ee·myeclipse
Dann Hiroaki2 小时前
笔记分享: 哈尔滨工业大学CS31002编译原理——02. 语法分析
笔记·算法
idolyXyz2 小时前
[java: Cleaner]-一文述之
java
KhalilRuan2 小时前
Unity-MMORPG内容笔记-其三
笔记
一碗谦谦粉2 小时前
Maven 依赖调解的两大原则
java·maven
emplace_back2 小时前
C# 集合表达式和展开运算符 (..) 详解
开发语言·windows·c#
jz_ddk2 小时前
[学习] C语言数学库函数背后的故事:`double erf(double x)`
c语言·开发语言·学习
萧曵 丶2 小时前
Rust 所有权系统:深入浅出指南
开发语言·后端·rust