SpringSecurity -- 入门使用

news2024/11/15 13:40:32

文章目录

  • 什么是 SpringSesurity ?
  • 细节
  • 使用方法

什么是 SpringSesurity ?

在我们的开发中,安全还是有些必要的
用 拦截器 和 过滤器 写代码还是比较麻烦。

SpringSecuritySpringBoot 的底层安全默认选型。一般我们需要认证和授权,这也是它的核心功能。我们仅仅需要导入 spring-boot-starter-security 模块,进行少量的配置,即可实现强大的安全管理

认证:验证当前访问系统的用户 是不是本系统的用户,并且要具体哪一个用户
授权:经过认证后判断当前用户是否有权限进行某个操作

细节

登录过程

在这里插入图片描述

在这里插入图片描述

负责我们在登录页面填写的用户和密码登录的请求,入门案例主要由他负责。

使用方法

总结到代码之中。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

// 开启 web 安全
@EnableWebSecurity
public class springSecurityConfig extends WebSecurityConfigurerAdapter { // 然后我们继承 web安全配置 适配器


    // 链式编程
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().  // authorize 授权
                antMatchers("/").permitAll()  //  ant ==> 蚂蚁    matcher ==> 匹配器 permitAll ==> 允许所有
                .antMatchers("/test1/**").hasRole("vip1")  //  role角色
                .antMatchers("/test2/**").hasRole("vip2")
                .antMatchers("/test3/**").hasRole("vip3");

        // 如果没有用户的情况下,则会跳转到 login 页面       // 登录加工的url
        http.formLogin().loginPage("/toLogin").usernameParameter("name").passwordParameter("pwd").loginProcessingUrl("/Login");

//                 http.formLogin()
//                   .loginPage("/toLogin") // 设置登录页面URL
//                   .loginProcessingUrl("/Login") // 设置表单提交的URL 个人感觉:应该是需要认证的模块
//                   .failureUrl("/login-error") // 登录失败后的重定向URL
//                   .defaultSuccessUrl("/home", true) // 登录成功后的默认重定向URL
//                .and()
//                  .logout()
//                   .logoutSuccessUrl("/"); // 注销成功后的重定向URL

        // 开启记住我功能
        http.rememberMe().rememberMeParameter("jiZhuWo");

        http.csrf().disable();  // 关闭脚本跨站攻击
        // 开启注销功能
        http.logout().logoutSuccessUrl("/index");  // 注销成功后,回到 “/index” 之中。
    }

    // 认证
    @Override // 最新版本需要密码加密
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {  // Authentication 认证 Manager 管理者
        auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder()) // Memory 记忆
                .withUser("xj").password(new BCryptPasswordEncoder().encode("abc")).roles("vip1","vip2")  // memory ==> 记忆
                .and()
                .withUser("test").password(new BCryptPasswordEncoder().encode("cba")).roles("vip3");
    }
}

我们可以看到,拥有这个功能,不仅提供了权限、安全等,还另外 省去了写登录后台、过滤器等大量繁杂的代码,十分的方便

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

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

相关文章

【Finetune】(三)、transformers之P-Tuning微调

文章目录 0、P-Tuning基本原理1、代码实战1.1、导包1.2、加载数据集1.3、数据集预处理1.4、创建模型1.5、P-tuning*1.5.1、配置文件1.5.2、创建模型 1.6、配置训练参数1.7、创建训练器1.8、模型训练1.9、模型推理 0、P-Tuning基本原理 P-Tuning的基本思想是在prompt-tuning的基…

Spring Boot管理用户数据

目录 学习目标前言Thymeleaf 模板JSON 数据步骤 1: 创建 Spring Boot 项目使用 Spring Initializr 创建项目使用 IDE 创建项目 步骤 2: 添加依赖步骤 3: 创建 Controller步骤 4: 新建index页面步骤 5: 运行应用程序 表单提交步骤 1: 添加 Thymeleaf 依赖在 Maven 中添加依赖 步…

Vue3.3新特性defineModel

defineModel的使用: defineModel选项可以帮我们省去很多麻烦 不仅需要上述操作,还需要进行一定的配置: 在vite.config.js中进行配置 defineModel是一个宏,所以不需要从vue中import导入,直接使用就可以了。这个宏可以用来声明一个…

Java之线程篇六

目录 CAS CAS伪代码 CAS的应用 实现原子类 实现自旋锁 CAS的ABA问题 ABA问题导致BUG的例子 相关面试题 synchronized原理 synchronized特性 加锁过程 相关面试题 Callable 相关面试题 JUC的常见类 ReentrantLock ReentrantLock 和 synchronized 的区别: 原…

Android 新增目录怎么加入git

工作中会遇到android系统源码系统增加第三方功能支持,需要增加目录,那么这个目录怎么提交到服务器上去呢?接下来我们就看下这个问题的解决 一服务器创建仓库 一个新的目录增加到仓库中,需要仓库有对应的仓库地址,这个让…

小记编程语言浮点精度问题

注意: 本文内容于 2024-09-15 20:21:12 创建,可能不会在此平台上进行更新。如果您希望查看最新版本或更多相关内容,请访问原文地址:小记编程语言浮点精度问题。感谢您的关注与支持! 浮点数在计算机中不能精确表示所有…

docker启动mysql未读取my.cnf配置文件问题

描述 在做mysql主从复制配置两台mysql时,从节点的my.cnf配置为: [mysqld] datadir /usr/local/mysql/slave1/data character-set-server utf8 lower-case-table-names 1 # 主从复制-从机配置# 从服务器唯一 ID server-id 2 # 启用中继日志 relay-l…

【小沐学CAD】3ds Max常见操作汇总

文章目录 1、简介2、二次开发2.1 C 和 3ds Max C SDK2.2 NET 和 3ds Max .NET API2.3 3ds Max 中的 Python 脚本2.4 3ds Max 中的 MAXScript 脚本 3、快捷键3.1 3Dmax键快捷键命令——按字母排序3.2 3dmax快捷键命令——数字键3.3 3dmax功能键快捷键命令3.4 3Dmax常用快捷键——…

对网页聊天项目进行性能测试, 使用JMeter对于基于WebSocket开发的webChat项目的聊天功能进行测试

登录功能 包括接口的设置和csv文件配置 ​​​​​​ 这里csv文件就是使用xlsx保存数据, 然后在浏览器找个网址转成csv文件 注册功能 这里因为需要每次注册的账号不能相同, 所以用了时间函数来当用户名, 保证尽可能的给正确的注册数据, 时间函数使用方法如下 这里输入分钟, 秒…

肝内胆管癌中三级淋巴结构分布与临床预后的相关性研究|文献精析·24-09-22

小罗碎碎念 这篇文章是关于肝内胆管癌(intrahepatic cholangiocarcinoma, iCCA)中三级淋巴结构(tertiary lymphoid structures, TLSs)的分布、密度及其对临床结果的预测价值的研究。 作者类型作者姓名单位名称(中文&a…

数据结构——串的模式匹配算法(BF算法和KMP算法)

算法目的: 确定主串中所含子串(模式串)第一次出现的位置(定位) 算法应用: 搜索引擎、拼写检查、语言翻译、数据压缩 算法种类: BF算法(Brute-Force,又称古典的…

【洛谷】P10417 [蓝桥杯 2023 国 A] 第 K 小的和 的题解

【洛谷】P10417 [蓝桥杯 2023 国 A] 第 K 小的和 的题解 题目传送门 题解 CSP-S1 补全程序,致敬全 A 的答案,和神奇的预言家。 写一下这篇的题解说不定能加 CSP 2024 的 RP 首先看到 k k k 这么大的一个常数,就想到了二分。然后写一个判…

《深入理解JAVA虚拟机(第2版)》- 第13章 - 学习笔记【终章】

第13章 线程安全与锁优化 13.1 概述 面向过程的编程思想 将数据和过程独立分开,数据是问题空间中的客体,程序代码是用来处理数据的,这种站在计算机角度来抽象和解决问题的思维方式,称为面向对象的编程思想。 面向对象的编程思想…

一劳永逸:用脚本实现夸克网盘内容自动更新

系统环境:debian/ubuntu 、 安装了python3 原作者项目:https://github.com/Cp0204/quark-auto-save 感谢 缘起 我喜欢看电影追剧,会经常转存一些资源到夸克网盘,电影还好,如果是电视剧,麻烦就来了。 对于一…

Kettle的安装及简单使用

Kettle的安装及简单使用一、kettle概述二、kettle安装部署和使用Windows下安装案例1:MySQL to MySQL案例2:使用作业执行上述转换,并且额外在表stu2中添加一条数据案例3:将hive表的数据输出到hdfs案例4:读取hdfs文件并将…

Jboss常⻅中间件漏洞

一.CVE-2015-7501 环境搭建 cd vulhub-master/jboss/JMXInvokerServlet-deserialization docker-compose up -d 1.POC,访问地址 172.16.1.4:8080/invoker/JMXInvokerServlet 返回如下,说明接⼝开放,此接⼝存在反序列化漏洞 2.下载 ysose…

7.C++程序中的基本数据类型-数据类型之间的转换

在C中,类型转换是将一个数据类型转为另外一个数据类型,其转换过程比较复杂,目前只讨论基本数据类型之间的转换。 类型转换分为两部分:隐式转换和显示转换 隐式转换又称为自动转换,显示转换又称为强制转换。 隐式转换…

[Linux] Linux进程PCB内部信息的深入理解

标题:[Linux] Linux进程PCB内部信息的深入理解 个人主页:水墨不写bug (图片来自网络) 目录 一.查看进程 二.认识并了解进程的关键信息 I,PID/PPID II,exe III,cwd 三、fork(&…

vue源码分析(九)—— 合并配置

文章目录 前言1.vue cli 创建一个基本的vue2 项目2.将mian.js文件改成如下3. 运行结果及其疑问? 一、使用 new Vue 创建过程的 2 种场景二、margeOption的详细说明1.margeOption的方法地址2.合并策略的具体使用3.defaultStrat 默认策略方法 三:以生命周期…

OpenResty安装及使用

🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢…