前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot 集成 Security 入门小实例

Spring Boot 集成 Security 入门小实例

作者头像
村雨遥
发布2022-06-05 11:59:25
4470
发布2022-06-05 11:59:25
举报
文章被收录于专栏:JavaPark

前言

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

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

集成过程

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

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

创建 Spring Boot 项目

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

Spring Boot 基础教程:创建项目的 3 种方式

添加相关依赖

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

代码语言:javascript
复制
<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 用户所生成的临时密码。

代码语言:javascript
复制
Using generated security password: 67511bb5-a3e4-4113-9e47-4d733956c860

修改默认登录用户密码

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

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

在项目的配置文件中配置用户和密码,当然,项目生成的默认配置文件是位于 resources 目录下的 application.properties,所以需要将其后缀改成 .yml。关于 Spring Boot 中的这两种配置文件的区别,可以参考我之前的一篇文章:

Spring Boot 基础教程:配置详解

代码语言:javascript
复制
spring:
  security:
    user:
      name: cunyu1943
      password: cunyu1943@

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

创建页面

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

代码语言:javascript
复制
@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 的知识,我们后续的文章再见吧!

最后,关于本文的中的代码,我已经上传到云端,有需要的小伙伴可以自取。

➛ 传送门

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 集成过程
    • 创建 Spring Boot 项目
      • 添加相关依赖
        • 启动项目
          • 修改默认登录用户密码
            • 创建页面
            • 总结
            相关产品与服务
            多因子身份认证
            多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档