springsecurity学习——快速开始(代码片段)

sadoshi sadoshi     2022-10-24     807

关键词:

前言

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只拦截部分页面等。这些都会在后面的文章中学习。

springsecurity学习——快速开始(代码片段)

前言SpringSecurity是目前Java后台管理系统中使用最常见的安全认证框架之一。它的上手没Shiro那么直观。Shiro是可以直接开个javaSE应用验证的,但SpringSecurity基本要求和web关联起来。刚开始看甚至不知道从何入手。最近决定静下... 查看详情

认证和授权学习2:springboot中快速使用springsecurity

认证和授权学习2:springboot中快速使用springsecurity本文以一个示例工程记录下如何在springboot工程中快速的使用springsecurity,使用的springboot版本是目录认证和授权学习2:springboot中快速使用springsecurity一、创建工程,导入依赖二、默认... 查看详情

springboot学习——springboot快速整合使用springsecurity组

SpringSecurity简介springsecurity的核心功能为认证(Authentication),授权(Authorization),即认证用户是否能访问该系统,和授权用户可以在系统中进行哪些操作。引入springsecurity组件在pom.xml中加入<dependency><groupId>org.springframewo... 查看详情

轻松上手springsecurity,oauth,jwt(代码片段)

目录学习目标一.SpringSecurity1.SpringSecurity简介及快速入门<1>.SpringSecurity简介<2>.SpringSecurity快速入门2.SpringSecurity基本原理<1>.UserDetailsService详解<2>.PasswordEncoder密码解析器详解3.SpringSecurity自定义 查看详情

机器学习sklearn:sklearn快速开始(代码片段)

...s://www.cnblogs.com/lianyingteng/p/7811126.html0简介  传统的机器学习任务从开始到建模的一般流程是:获取数据->数据预处理->训练建模->模型评估->预测,分类。本文我们将依据传统机器学习的流程,看看在每一步流程中都有... 查看详情

springsecurity学习——使用数据库保存密码(代码片段)

前言上一篇文章我们已经快速搭起SpringSecurity应用。我们使用的是默认的用户名密码。通常项目中我们使用数据库保存密码,并且数据库的密码是加密保存的。如何做到呢,是这篇文章的重点。引入数据库新建数据库表我... 查看详情

学习kubernetes,从快速搭建k8s集群开始(代码片段)

...系列文章,我们将在UbuntuServer18.04上搭建k8s环境进行入门学习。为了使用原生的UbuntuServer18.04,我们将使用multipass来创建多台UbuntuServer18.04虚拟环境。也就是说,如果你想完整参考本系列博客学习,你电脑上应当安装并能正常运行... 查看详情

springsecurity学习(代码片段)

1.SpringSecurity框架简介1.1概要Spring是非常流行和成功的Java应用开发框架,SpringSecurity正是Spring家族中的成员。SpringSecurity基于Spring框架,提供了一套Web应用安全性的完整解决方案。正如你可能知道的关于安全方面的两个主要区域是... 查看详情

springsecurity学习总结(代码片段)

这几天一直在学习springsecurity的相关知识.逛各大论坛,看相关api与教学视频,获益良多!简介SpringSecurity是为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了完整的安全性解决方案,可以在Web... 查看详情

springsecurity学习二(代码片段)

doc:https://docs.spring.io/spring-security/site/docs/基于表单的认证(个性化认证流程):一、自定义登录页面1、在securityConfigy配置类中的config方法中添加调用链方法@Overrideprotectedvoidconfigure(HttpSecurityhttp)throwsExceptionhttp.formLogin()/ 查看详情

springsecurity学习——密码加密(代码片段)

前言上一篇文章我们实现了从数据库读取用户名密码到SpringSecurity中,并验证登录成功。不过密码的形式有点奇怪,这篇文章我们研究一下密码加密和比对的问题。SpringSecurity的密码加密和比对密码编码器的使用SpringSecurit... 查看详情

源码时代java干货分享|springsecurity快速上手秘籍(代码片段)

...#xff0c;今天咱们探讨的是Spring旗下的一个款认证工具:SpringSecurity,如今认证框架主流“shiro”和“SpringSecurity”,由于和Spring的无缝衔接, 查看详情

第三篇开始和springsecurity的简单交往-处理请求的本质(代码片段)

SpringSecurity请求流转的本质1.SpringSecurity核心源码分析分析SpringSecurity的核心原理,那么我们从哪开始分析?以及我们要分析哪些内容?系统启动的时候SpringSecurity做了哪些事情?第一次请求执行的流程是什么?S... 查看详情

springsecurity问题记录

...。最近觉得应该去了解规范的用户及权限认证技术了,从SpringSecurity开始学习使用。本文记录学习SpringSecurity过程中遇到的一些问题及解决方案。1.版本问题SpringBoot2.x和SpringSecurity5.x前配置用户名密码:security.user.name=admi 查看详情

springsecurity学习(代码片段)

认证和授权认证解决“我是谁的问题”什么是认证?认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪一个用户授权解决“我能做什么”的问题授权:经过认证之后判断当前用户是否有权限进... 查看详情

springsecurity快速了解

在SpringSecurity之前我曾经使用Interceptor实现了一个简单网站Demo的登录拦截和Session处理工作,虽然能够实现相应的功能,但是无疑SpringSecurity提供的配置方法更加简单明确,能够更好的保护Web应用。SpringSecurity的相关结构这里大家... 查看详情

快速学习

...,然后想要更大的能力需要有个具体的目标比如,你想要学习中文,开始就是只要学习中文就好了,但是后来我要有一个更大的目标,我需要更具体的目标,语法,语音等。前100天肯困难坚持下来,但是坚持了下来后来就是习惯... 查看详情

springsecurity框架详解(代码片段)

SpringSecurity来源视频文章目录SpringSecurity1、概述2、SpringSecurity、ApacheShiro选择问题2.1、Shiro2.1.1、shiro的优点2.1.2、shiro的缺点2.2、SpringSecurity2.2.1、spring-security的优点3、快速入门3.1、装备工作4、认证4.1、登录流程校验4.2、入门案例... 查看详情