Spring Security学习与探究系列(一):快速上手Spring Security

简介

为了督促自己的学习,新开一个坑,就是记录对Spring Security的探究与学习。使用Spring Security的目的是,之前实现后端时,用户验证与鉴权都是手动实现的而过于繁琐。后来了解到了Spring Security对Web的安全有很好的支持,因此打算系统地学习一下Spring Security,并将学习过程中的思考和见解一并分享出来,欢迎批评指出。

什么是Spring Security

先读官方文档对其的定义:

Spring Security是一个框架,提供了身份验证、授权和针对常见攻击的保护。

Spring Security是一个轻量级的安全框架,能为基于Spring的Java Web应用程序的安全提供保证。Spring Security能与Spring MVC很好地集成,因此如果项目是基于Spring搭建的,那么在原本项目的基础上加入Spring Security来进行安全校验是一个较好的选择。

快速开始

我们先来快速地搭建一个基础项目,实现Spring Security所提供的功能吧。首先,笔者所使用的的环境和IDE具体为:

  1. AdoptOpenJDK 11
  2. IntelliJ IDEA 2020.1.2 x64

推荐使用IDEA新建项目中选项中的Spring Initializr,使用该初始化器能够快速地搭建一个SpringBoot项目,并且可以自由地选择将要使用的组件,本文选择Spring Security组件。生成项目后,打开pol.xml文件看一下:

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

需要注意的是,本文所使用的的SpringBoot版本为2.4.5。

此时,直接运行该SpringBoot项目,打开浏览器访问localhost:8080/login,可以看到如下画面:
默认页面
这是Spring Security为我们默认生成的登录页面,并且用户名是user,密码是IDEA控制台打印出来的一串密码。到目前为止,Spring Security已经快速地集成到我们的项目中了,但这一切都是默认提供的,我们希望能够使用自定义的登录页面。下面介绍Spring Security的进一步使用。

往前一步

Spring Security提供了灵活的可定制化的配置,可以根据项目具体情况来进行不同的配置以实现不同的安全功能。Spring Security中进行配置的操作是在WebSecurityConfigurerAdapter,我们只需要继承该类,并重写configure方法即可。本文不会对各种类和接口进行繁琐的介绍,力求最快速地实现。因此下面我们介绍怎么样自定义登录页面。

Step.1 准备前端页面

我们先准备几个需要访问的页面,分别是登录页面、登录成功页面和登录失败页面。显然,登录成功和登录失败的页面是需要验证才能访问的,而登录页面则不需要任何的验证。下面的HTML页面均放置于resources/templates文件夹下。
1. login.html

<!DOCTYPE html>
<html lang="cn">
<head>
    <meta charset="UTF-8">
    <title>简单登录页面</title>
</head>
<body>
<h3>简易表单登录</h3>
<form action="/doLogin" method="post">
    <table>
        <tr>
            <td
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值