springsecurity学习笔记-未完

news2024/11/16 21:36:20

目录

前言

一、概念

1.什么是springsecurity

2.对比shiro

二、开始项目

1.建立一个空项目,建立module,引入相关依赖

2.启动项目,访问项目

3.自定义密码

总结



前言

记录一下学习springsecurity的过程

开发环境:IDEA


一、概念

1.什么是springsecurity

spring提供的安全管理框架,核心功能是认证,授权

认证:验证当前用户是不是本系统注册的用户,识别具体是哪个用户

授权:通过认证的用户,需要判断是否具有权限进行某个操作

2.对比shiro

springsecurity功能更强大,shiro更容易上手应用

二、开始项目

1.建立一个空项目,建立module,引入相关依赖

new Project->Empty Project

File->new module->Spring Initializr->Maven->选择需要加入的功能->生成项目,等待依赖导入

必须选择的包括springsecurity,springweb,注意右上角选择自己想要的springboot版本,springboot版本与jdk版本要匹配,否则可能会导致其他依赖的版本混乱

附上依赖pom

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.14</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>springsecuritydemo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springsecuritydemo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <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-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2.启动项目,访问项目

控制台输出如下,意思是自动生成了密码,如果你要在生产环境使用,应该修改配置

Using generated security password: 7bc86ae1-30a1-435c-bc59-6d894a7ae0b6

This generated password is for development use only. Your security configuration must be updated before running your application in production.

访问项目localhost:8080,以往我们访问本地项目,直接会进入首页,但这次弹出了一个登录页面

这是springsecurity自带的过滤器,验证当前用户没有登陆,自动跳转到登录页面

这个页面是通过网络下载的bootstrap页面,如果下载的有问题,那么页面展示效果可能会不太好,可以忽略

输入账号密码登录,默认账号为user,密码为刚刚控制台输出的

登陆后跳转到error页面,这并不是登录失败了,只是没有识别到登陆成功后应该跳转到哪

我们可以自己写一个接口访问,比如http://localhost:8080/index,页面输出hello world!

@RestController
public class IndexController {

    @GetMapping("/index")
    public String index() {
        return "hello world!";
    }
}

3.自定义密码

如果我们不想使用默认生成的密码,可以自己配置密码application.yml

spring:
  security:
    user:
      name: admin
      password: 1234

那么刚才我们没有配置密码的时候,默认密码是怎么生成的呢,security的User类给name和password提供了默认值

private String name = "user";
private String password = UUID.randomUUID().toString();

4.自定义登陆页面

显然我们不可能使用security提供的登陆页面


总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1140989.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

shell脚本的编写(输入、输出、变量、数组等的使用规范及实例)

1.shell中变量的定义 使用变量的值&#xff1a; 例子&#xff1a; 2.外部传参/位置变量 例子&#xff1a; 3.输出---echo 4.输入---read 5.命令置换符 作用:把指令的运行结果赋值给变量 6.数组--shell支持稀疏数组

计算机视觉的相机选型

#你一般什么时候会用到GPT?# 目前市面上的工业相机大多是基于CCD&#xff08;ChargeCoupled Device&#xff09;或CMOS&#xff08;Complementary Metal Oxide Semiconductor&#xff09;芯片的相机。一般CCD制造工艺更加复杂&#xff0c;也会更贵一点&#xff01; 1、CCD工…

请求分页中的内存分配

1.最小物理块数的确定 这里所说的最小物理块数&#xff0c;是指能保证进程正常运行所需的最小物理块数。当系统为进程分配的物理块数少于此值时&#xff0c;进程将无法运行。 2.内存分配策略 1&#xff09;内存分配策略 固定分配是指为每个进程分配一固定页数的内存空间&am…

支持自动生成API文档 Apipost 真香

在数字化时代&#xff0c;API已经成为了应用程序之间进行通信的关键桥梁。随着API的普及和复杂性的增加&#xff0c;API研发和管理也面临着越来越多的挑战。为了更好地应对这些挑战&#xff0c;Apipost提供了一整套API研发工具&#xff0c;包括API设计、API调试、API文档和API自…

碳排放数据,各地区的(直辖市数据细分到区县),含shp和xlsx格式,带符号化

这两天推了道路相关的数据&#xff0c;道路线路、客运飞机场、航空、地铁、火车站点等等交通出行类的数据之前都已发过&#xff0c;需要的可以自己翻一翻。 交通运输行业还比较关注的碳排放数据&#xff0c;也整理出来了&#xff0c;有需要的自取。 数据地址&#xff1a; 全…

政务可视化 玫瑰图和柱折混合图

安装echarts时&#xff0c;需进入到vue-demo的目录下 与第二章操作步骤相同 删除全部默认效果 将上述60像素删除&#xff0c;设置整个背景宽&#xff0c;高等 设置标题 设置图表结构&#xff08;左右两个盒子&#xff09; 设置图表边框&#xff0c;宽&#xff0c;高&#xff0…

Peter算法小课堂—归并排序

位运算 << 这个符号相当于将一个数二进制往左移动几位&#xff0c;如(100110)2<<1(001100)2。相当于乘以2的k次方 >> 这个符号相当于将一个数二进制往右移动几位&#xff0c;如(100110)2<<1(0100110)2。相当于除以2的k次方 归并排序 先看一个视频…

token正确不报错,token失效后却出现报跨域错误

1.今天在使用koajs开发项目时&#xff0c;突然发现前端配置axios的response获取不到后端定义的token失效内容了&#xff0c;取而代之的是出现了跨域的错误。 2. 我马上去查找koajs的跨域中间件配置&#xff0c;发现配置完好cors&#xff0c;token正确时&#xff0c;接口正常访问…

code too large

描述&#xff1a;比较尴尬&#xff0c;一个方法的代码接近10000行了&#xff0c;部署服务器的时候提示(java :code[255,21] too large),提示代码过长&#xff0c;无法运行。 查看了一下百度&#xff1a;解决的思路 JVM规范&#xff1a;「类或接口可以声明的字段数量限制在 655…

水声功率放大器的应用场景是什么

水声功率放大器是一种专门用于水声信号处理和传输的设备&#xff0c;通过放大水声信号的功率&#xff0c;以实现远距离传播和提高信号的清晰度和可辨识度。下面是关于水声功率放大器应用场景的详细解释&#xff1a; 水声通信&#xff1a;水声通信是一种在水下进行声波传输的技术…

电脑如何激活windows

当我们电脑出现如下图&#xff1a; 显示需要激活windows时&#xff0c;操作如下。 1、桌面-新建-文本文档 2、将文档命名为&#xff08;激活windows.bat&#xff09;把原有文档中的后缀.txt去掉 3、点击右键&#xff0c;选择编辑输入代码 slmgr/skms kms.03k.org slmgr/ato4、…

logback-classic包中ThrowableProxy递归缺陷StackOverflowError解析

logback-classic&#xff08;<1.2.12版本&#xff09;ThrowableProxy类中存在递归缺陷&#xff0c;会导致java.lang.StackOverflowError。改缺陷在1.2.12以上版本(包含该版本)中已修复。 如何复现&#xff1a; 两个异常彼此设置casue&#xff1a; 运行后报以下错误 以上写…

Rust 模块系统

文章目录 模块系统crate包cargo 创建库库的使用 模块系统 Rust的{模块系统|the module system}&#xff0c;包括&#xff1a; * 包&#xff08;Packages&#xff09;&#xff1a; Cargo 的一个功能&#xff0c;它允许你构建、测试和分享 crate。 * Crates &#xff1a;一个模…

【Uva】10976-Fractions Again?!

1、题目 2、题意 输入正整数 k k k&#xff0c;找到所有正整数 x ≥ y x \ge y x≥y&#xff0c;使得 1 k 1 x 1 y \frac{1}{k} \frac{1}{x} \frac{1}{y} k1​x1​y1​。 3、分析 既然要求找出所有的 x , y x,y x,y&#xff0c;枚举对象自然是 x , y x,y x,y了。可…

有用过成绩查询系统的老师吗?

是不是有时候觉得手动查询成绩是一件超级繁琐的事情&#xff1f;有了这个成绩查询系统&#xff0c;你就可以告别手动时代啦&#xff01; 先来了解一下什么是成绩查询系统。成绩查询系统是一种可以自动查询学生成绩的系统。通过这个系统&#xff0c;学生可以输入自己的学号或姓名…

使用管理员其权限打开cmd,如何切换到其他磁盘

问题描述&#xff1a; 切换到 O:\BaiduSyncdisk\develope\mysql-8.0.31-winx64 &#xff0c;直接使用cd命令切换失败。 原因是因为&#xff0c;在使用管理员身份打开cmd的时候&#xff0c;只能切换到当前盘符下的目录&#xff0c;而不能切换到其他盘符下的目录。 解决方案&am…

Android原生项目集成uniMPSDK(Uniapp)遇到的报错总结

uni小程s序SDK 集成到Android原生项目:老项目中用到的库较多&#xff0c;会出现几种冲突问题&#xff0c;总结如下&#xff1a; 报错1&#xff1a; Execution failed for task :app:processDebugManifest. > Manifest merger failed with multiple errors, see logs Andro…

mac idea 问题

运行springboot工程时突然idea就崩了&#xff0c;然后再打开maven的小窗口都没了&#xff0c;怎么都出不来。一气之下重装idea 发现都不行。后来发现是没清理干净之前的配置。 /Users/你的用户名/Library/Application\ Support/JetBrains 这个文件夹下清理掉之后&#xff0c;重…

单片机为什么一直用C语言,不用其他编程语言?

单片机为什么一直用C语言&#xff0c;不用其他编程语言&#xff1f; 51 单片机规模小得拮据&#xff0c;C 的优势几乎看不到。放个类型信息进去都费劲&#xff0c;你还想用虚函数&#xff1f;还想模板展开&#xff1f;程序轻松破 10k。最近很多小伙伴找我&#xff0c;说想要一些…

数据库SqlServer面试题不完全总结

数据库SqlServer面试题不完全总结 一、数据库基础知识&#xff08;通用&#xff09;篇 1.说说主键、外键、超键、候选键 超键&#xff1a;在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键&#xff0c;多个属 性组合在一起也可以作为一个超键…