Spring Security学习——快速开始
Posted sadoshi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Security学习——快速开始相关的知识,希望对你有一定的参考价值。
前言
Spring Security是目前Java后台管理系统中使用最常见的安全认证框架之一。它的上手没Shiro那么直观。Shiro是可以直接开个javaSE应用验证的,但Spring Security基本要求和web关联起来。刚开始看甚至不知道从何入手。最近决定静下心来好好学习一下Spring Security的使用。
快速开始
Spring Security不像Shiro那样需要众多配置。它有很多默认的设置,甚至连默认登录页都替使用者准备了。作为快速开始,我们先看看Spring Security的默认效果,再逐步把默认的设置改为自定义方式。
新建项目
新建一个maven项目,pom如下。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sadoshi.springsecurity</groupId>
<artifactId>test1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.8</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
新建启动类App
package com.sadoshi.springsecurity;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class App
public static void main(String[] args)
SpringApplication.run(App.class, args);
新建控制类HelloController
package com.sadoshi.springsecurity.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController
@RequestMapping("/hello")
public String hello()
return "hello";
接着我们启动App类,然后在浏览器地址栏输入:http://localhost:8080/hello。然后你会发现浏览器重定向到 http://localhost:8080/login
上面这个就是Spring Security的默认登录页。它拦截了用户的访问请求,重定向到默认登录页。接着我们要登录,默认的用户名是user,密码则是启动时随机生成,看下程序启动时的控制台输出:
红色框框的就是密码。我们输入帐号名和密码,就能打开/hello的页面.
增加配置文件
目前我们的项目还没有配置文件,为了方便后续一些配置,我们在resource目录下添加application.yml配置文件:
server:
port: 8082
我们把端口设置为8082。
Spring Security的架构
Spring Security使用过滤器完成拦截操作。贴张官网的图:
可以看到从客户访问系统,经过过滤器链。而Spring Security则是其中的一串SecurityFilterChain。我们可以通过源码断点调试看下Spring Security都添加了哪些过滤器:
通过断点可以看到Spring Security添加了15个过滤器。从名字看第五个的UsernamePasswordAuthenticationFilter应该就是校验用户名密码的过滤器。学习Spring Security也是围绕着这些过滤器学习
小结
本文我们发现引入Spring Security使用非常快捷,Spring Security有很多默认配置的东西,包括默认登录界面,默认用户名密码。这也让我们有很多疑问,比如如何替换默认登录页,如何设置让其读取数据库里保存的用户名密码,如何设置让Spring Security只拦截部分页面等。这些都会在后面的文章中学习。
以上是关于Spring Security学习——快速开始的主要内容,如果未能解决你的问题,请参考以下文章
认证和授权学习2:springboot中快速使用spring security