首页 > 编程语言 >Java学习 - Springboot 集成 Security 入门小实例

Java学习 - Springboot 集成 Security 入门小实例

时间:2024-07-24 19:26:51浏览次数:11  
标签:Java Springboot 登录 Spring Boot 默认 密码 Security

前言

Spring SecuritySpring 家族中一个强大可定制的身份验证和访问控制框架,和 Shiro 一样,它们都具有认证、授权、加密等用于权限管理的功能。但相比于 ShiroSpring Security 的功能无疑更加强大。而且作为 Spring 家族中的一份子,配合家族中的其它兄弟 - Spring BootSpring Cloud 使用起来更加丝滑。

今天就来看看,如何在 Spring Boot 集成 Spring Security,实现最简单的认证授权功能。

集成过程

要在 Spring Boot 集成 Security,其实很简单,可以总结为如下几个步骤:

  1. 首先是创建一个 Spring Boot 项目。
  2. 添加 Spring Security 相关依赖。

创建 Spring Boot 项目

这个过程只要你学习过 Spring Boot,那么你肯定是已经很熟悉了,所以在这里我也就不再赘述了。当然,如果你对这个过程还是不太熟悉,那么可以参考我之前的文章。

添加相关依赖

项目创建好之后,一般默认是已经添加了 Web 依赖,这个时候,我们只需要在项目的 pom.xml 文件中添加 Spring Security 的相关依赖即可。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

启动项目

完成上面步骤的操作后,接下来我们直接启动项目,然后在浏览器中访问以下地址:

http://localhost:8080

不出意外应该会跳出以下的界面,让我们登录。此时你可能会很纳闷,为什么我们只加了个 Spring Security 的依赖,怎么就需要登陆了呢?而且,登录的话,用户名和密码又是多少呢?

再仔细观察浏览器的地址栏,此时我们访问的地址也变了,变成了:

http://localhost:8080/login

这又是怎么一回事呢?

原来这就是 Spring Security 为我们的项目所提供的保护机制。在添加 Spring Security 之后,此时再去访问项目,它就会自动重定向到 Security 所提供的登录页面,也就是下面的界面。

在这里插入图片描述

同样的 Spring Security 也为我们所提供了一个默认的用户名,也就是 user,至于密码,这就谁都说不准了。因为它会随着我们项目的每次启动而自动生成,所以每次的登录密码都是不一样的。至于要如何获取,那就得去我们的 IDEA 查看控制台查看日志了。

查看日志我们可以发现如下的一行,其实这就是 Spring Security 所提供的登录密码了。这是一个 UUID 字符串,是 Spring Security 为默认的 user 用户所生成的临时密码。

Using generated security password: 67511bb5-a3e4-4113-9e47-4d733956c860

在这里插入图片描述

修改默认登录用户密码

虽然 Security 提供了默认的 user 用户,但是大家都知道这是默认的,而且需要每次去日志中找登录密码,那有没有方法可以自定义我们的用户和密码呢?答案是,有的。

Security 为我们提供了配置,我们可以在项目的配置文件 application.yml 中去定义自己的用户名和密码,然后它就会覆盖掉 Security 为我们提供的默认用户和密码。

在项目的配置文件中配置用户和密码,当然,项目生成的默认配置文件是位于 resources 目录下的 application.properties,所以需要将其后缀改成 .yml

spring:
  security:
    user:
      name: cunyu1943
      password: cunyu1943@

然后重启我们的项目,就可以用我们配置的用户和密码来进行登陆了。

创建页面

新建一个 Controller 页面,用于打印最经典的 Hello World!

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

重新启动项目后,在浏览器中访问以下地址:

http://localhost:8080/hello

然后 Spring Security 就会重定向到 http://localhost:8080/login 页面,此时我们用上面配置的用户名和密码进行登录,登录成功后就会跳转到我们的 /hello 页面了,页面中会打印 Hello World!

在这里插入图片描述

总结

以上就是 Spring Boot 集成 Spring Security 的实例了,主要演示了最经典的 Hello World 程序。关于更多 Spring Security 的知识,我们后续的文章再见吧!

标签:Java,Springboot,登录,Spring,Boot,默认,密码,Security
From: https://blog.csdn.net/paofuluolijiang/article/details/140575239

相关文章

  • SpringSecurity:hasAuthority与自定义权限校验
    springsecurity中有两种权限控制方法1.基于注解@PreAuthorize("hasAuthority('syst:add')")他的作用是在controller方法上进行权限校验,如果该用户具有对应的权限则放行,否则抛出AccessDeniedHandler,403(权限不足)2.基于配置//基于配置的权限控制http......
  • Java内存模型全解析:解决共享变量可见性与指令重排难题
    本期说一下Java内存模型(JavaMemoryModel,JMM)及共享变量可见性问题。“以下内容出自本人整理的面试秘籍。点击此处,无套路免费获取面试秘籍JMM是什么?答:Java内存模型(JavaMemoryModel,JMM)抽象了线程和主内存之间的关系就比如说线程之间的共享变量必须存储在主内存......
  • Java基础——String/StringBuilder/StringBuffer区别
    四个方面:不可变性、线程安全、性能、使用场景String:不可变,线程安全,适用于多线程编程。注意:由于String内部字符数组由final修饰,对其进行改变时会创建新的String对象,旧的会被JVM回收,容易触发gc(垃圾回收),这种行为可能会导致频繁的内存分配和垃圾回收,从而引起系统的内存抖动(memor......
  • java基础语法
    Java基础语法编译与运行在终端运行编译javajava文件,会生成一个class文件运行class文件,javaclass文件publicclassHello{ //类(publicclass)+名称(Hello)publicstaticvoidmain(String[]args){ //修饰符/关键字(publicstaticvoid)+方法(main)+参数S......
  • Java中string对象是如何实现的?string对象的优化过程
    1.基本实现Java中的String类是一个final类,这意味着它不能被继承。它内部使用一个字符数组(char[])来存储实际的字符序列。这个字符数组是私有的,并且不能被外部直接访问或修改(除了通过String类提供的公共方法)。String类还包含一些字段来跟踪字符串的长度(value.length)和哈希......
  • java代审中对jar包的审计
    在代码审计中,java比较特殊,相比于php这种纯脚本文件驱动,java还可以使用内置虚拟机驱动(如比较新的spring技术),这就常常涉及到jar包。之前都是跳过jar包,以为jar包里面就是一些框架性的东西,但是其实,有些jar包就是作者为系统专门编写或修改的,其中被引用的方法也是可能被直接引用,所以......
  • Springboot的n多注解(自用)
    pojocontrollerservice(无)service.implmapper  ——————pojo@Dataget/set等@NoArgsConstructor无参构造@AllArgsConstructor有参构造 ——————controller@Slf4j......
  • Java学习笔记(三)算术运算符、逻辑运算符、四种进制介绍
    Hii,mJinXiang⭐前言⭐本篇文章主要介绍Java算术运算符、逻辑运算符、四种进制介绍详细使用以及部分理论知识......
  • JavaScript 基础知识
    JavaScript是一种编程语言,可为您的网站增加交互性。这发生在游戏中,在按下按钮或在表单上输入数据时的响应行为中;具有动态样式;带有动画等。本文可帮助您开始使用JavaScript,并进一步了解可能的情况。什么是JavaScript?JavaScript 是一种功能强大的编程语言,可以为网站......
  • Java学习笔记(七)面向对象编程(中级部分)
    Hii,mJinXiang⭐前言⭐本篇文章主要介绍Java面向对象编程(中级部分)包、访问修饰符、封装、继承、super关键字、多态、向上(下)转型、equals、hashCode、断点调试等知识的详细使用以及部分理论知识......