Spring Security怎么自定义登录页? 怎么注销?

news2024/11/20 11:52:02

本章内容

  • 怎么自定义登录页
  • 底层都怎么实现
  • 如何注销?
  • 注销底层源码简单分析

开干

  1. 去网上找个好看的前端, 改改
  2. 改改spring security配置
  3. 启动

几个红框框的地方注意下

@Configuration
public class SecurityConfig {
   
   @Bean
   public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
      http.authorizeRequests()
            .antMatchers("/css/**", "/images/**", "/js/**").permitAll()
            .anyRequest().authenticated();
      
      http.formLogin(formLoginConfigurer -> {
         formLoginConfigurer.loginPage("/login.html");
         formLoginConfigurer.loginProcessingUrl("/doLogin");
         formLoginConfigurer.defaultSuccessUrl("/hello", true);
         formLoginConfigurer.permitAll();
      });
      
      http.csrf().disable();
      
      return http.build();
   }
   
}
server:
  port: 8080
spring:
  security:
    user:
      name: zhazha
      password: "{noop}123456"

都什么意思?

为什么spring security知道我们自定义了?

我们设置的loginPage地址去哪了?

我们配置的loginProcessingUrl在底层怎么玩?

前端已经用到这个地址了, 服务端只需要做个匹配器就好, 如果满足匹配器条件, 执行某个过滤器, 否则不执行过滤器

这个类可不得了 AbstractAuthenticationProcessingFilter, 看他实现就知道了

也就是说, 只要客户端请求了/doLogin, 就会被 AbstractAuthenticationProcessingFilter 过滤器匹配, 该过滤器就会拦截请求

又上面那个过滤器是抽象类, 最终一般都是UsernamePasswordAuthenticationFilter

spring security的匹配器和过滤器之间的关系类似于spring gateway的 predicates和filter, 也就是 kv 结构, k负责匹配, v负责功能

最后的permitAll呢?

默认是 true

几个地址都加入白名单

自定义表单属性

如果你前端请求传递给你的参数并不是 username 和 password 怎么办?

  1. 跟他说, 叫他改, 我喜欢, 约定大于配置
  2. 前端是老大, 我听他的
  3. 出去打一架

注销怎么拿捏?

// 注销
http.logout(logoutConfigurer -> {
   logoutConfigurer.invalidateHttpSession(true);
   logoutConfigurer.clearAuthentication(true);
   logoutConfigurer.permitAll();
});

完事~~~ 本章结束

源码分析

核心接口:

注销的过滤器:

LogoutFilter

invalidateHttpSession和clearAuthentication函数做了啥?

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

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

相关文章

【决策树】简单介绍+个人理解(二)

1、ID3(Iterative Dichotomizer) ID3是Quinlan于1986年提出的, 它的提出开创了决策树算 法的先河, 而且是国际上最早的决策树方法, 在该算法中, 引入了信息论中熵的概念, 利用分割前后的熵来计算信息 增益, 作为判别能力的度量。ID3 算法的核心是在决策树各个结点上应用信息增…

T-SQL程序练习04

目录 一、写一个存储过程 𝐹𝑖𝑏𝑜𝑛𝑎𝑐𝑐 1. 具体要求 2. T-SQL程序代码 3. 结果显示 二、建立存储过程 𝑆𝑎𝑛𝐺𝑢…

万向区块链肖风:元宇宙的十大经济规则

本文为万向区块链董事长兼总经理肖风为华泰证券研究所科技及电子行业首席分析师黄乐平、万向区块链首席经济学家邹传伟联合撰写的《元宇宙经济学》所作序言。 元宇宙是什么?按照我的理解,元宇宙是一个由分布式网络技术、分布式账本和分布式社会/商业构成…

消息中间件介绍

一般,我们认为消息中间件是指支持与保障分布式应用程序之间同步/异步收发消息的中间件。消息是分布式应用之间进行数据交换的基本信息单位,分布式应用程序之间的通信接口由消息中间件提供。其中,异步方式指消息发送方在发送消息时不必知道接收…

奇遇MIX体验:加入全彩VST透视,开创消费级VR一体机新时代

前不久在奇遇MIX发布会上我们知道,面临着国内复杂的竞争环境,奇遇VR将选择差异化运营模式,一是硬件上停产单一VR模式设备,专注于支持VST的VR设备;二是内容层面,通过提供三年影视或游戏权益的模式&#xff0…

【openGauss实战1】openGauss基于CentOS8的部署

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA工作经验 一位上进心十足的【大数据领域博主】!😜&#x1f61…

写出更优雅和稳健的 TS 代码的几个 tips

写出更优雅和稳健的 TS 代码的几个 tips 本来想放优雅 太优雅了.jpg,后来还是好懒啊…… 使用 unknown 代替 any any 的问题在于它直接关闭了 TS 的类型检查,因此一旦使用了 any,那就代表任何事情都会发生。使用 unknown 则告诉 TS&#x…

LIS源码 医院检验科LIS系统源码 .net检验系统源码 实验室信息管理系统源码全开源,价值百万

LIS系统即实验室信息管理系统。LIS系统能实现临床检验信息化,检验科信息管理自动化。其主要功能是将检验科的实验仪器传出的检验数据经数据分析后,自动生成打印报告,通过网络存储在数据库中,使医生能够通过医生工作站方便、及时地…

PXE+Kickstart 自动化部署系统

PXE 预启动执行环境是由Intel开发的技术,可以让计算机通过网络来启动操作系统(前提是计算机上安装的网卡支持PXE技术),主要用于在无人值守安装系统中引导客户端主机安装Linux操作系统. Kickstart是一种无人值守的安装方式,其工作原理是预先把原本需要运维人员手工填写的参数保…

谷粒商城之高级篇(2)

2.6 购物车服务 2.6.1 环境搭建 ①域名配置 ②创建 微服务 暂时需要的插件 此外&#xff0c;导入 公共包的依赖 <dependency><groupId>com.atguigu.gulimall</groupId><artifactId>gulimall-common</artifactId><version>0.0.1-SNAPSHOT…

50. 残差网络(ResNet)代码实现

1. 残差块 ResNet沿用了VGG完整的 33 卷积层设计。 残差块里首先有2个有相同输出通道数的 33 卷积层。 每个卷积层后接一个批量规范化层和ReLU激活函数。 然后我们通过跨层数据通路&#xff0c;跳过这2个卷积运算&#xff0c;将输入直接加在最后的ReLU激活函数前。 这样的设计…

PDF在线转Word?方便快捷易上手的方法

PDF和Word都是我们日常生活中经常看到的文件格式&#xff0c;如果你也是一个工作党&#xff0c;那小编相信你肯定会遇到关于这两种文件的转换问题。其实&#xff0c;PDF格式是十分方便我们进行文件传输和差阅读&#xff0c;不仅兼容性较强&#xff0c;而且文件内容相对来说是固…

罗克韦尔AB PLC安装Studio 5000 V35的具体步骤演示

罗克韦尔AB PLC安装Studio 5000 V35的具体步骤演示 具体安装步骤可参考如下内容: 解压下载的安装包,找到安装包中的Setup.exe, 如下图所示,右击Setup.exe,选择“以管理员身份运行”, 如下图所示,安装程序正在准备中, 如下图所示,此时安装程序报错:未安装Microsoft…

ARM64内存虚拟化分析(6)向KVM注册内存更新

1 KVM memory listener的注册 在KVM初始化kvm_init()中会通过函数km_memory_listener_regiter()注册KVM所对应的memory listener&#xff0c;其中设置KVM region_add回调&#xff0c;KVM region_del回调以及KVM log_start/log_stop的回调。 2 region_add回调 当添加内存区域时&…

Wireshark抓到的H264帧

H264文件解析 NALU size, NALU start code size, NALU type 0, 0 0 UNSPECIFIED NALU size, NALU start code size, NALU type 26, 4 7 SPS NALU size, NALU start code size, NALU type 4, 4 8 PPS NALU size, NALU start code…

浅谈数据孤岛和数据分析的发展

大数据时代&#xff0c;企业对数据的重视力度逐步增强&#xff0c;数据分析、数据治理、数据管理、数据资产&#xff0c;已经被人们熟知&#xff0c;在数据的统计汇总和挖掘分析下&#xff0c;管理者的决策有了强有力的支撑和依据&#xff0c;同时也产生了新的问题&#xff0c;…

CSS 奇技淫巧Box-shadow实现圆环进度条

CSS 奇技淫巧Box-shadow实现圆环进度条 文章目录CSS 奇技淫巧Box-shadow实现圆环进度条一、Box-shadow圆环进度条二、效果预览三、原理刨析四、实际应用五、总结六、参考资料&#x1f498;七、推荐博文&#x1f357;一、Box-shadow圆环进度条 实现圆环进度条的方法用很多种&am…

figma和sketch应该选择哪个?

设计行业的工具层出不穷&#xff0c;在我看来sketch它在一定程度上被颠覆了PS&#xff0c;如今sketch已经成为许多设计团队的设计工具。 那么Figma相对于Sketch自身优势是什么&#xff1f;有什么不便&#xff1f;让我们从几个方面来了解。 两个软件都很适合创建UI和组件库。Sk…

图形查看器丨IrfanView功能简介

IrfanView 是一款快速、紧凑和创新的图形查看器&#xff0c;适用于Windows XP、Vista、7、8、10和11。 IrfanView寻求创建独特、新颖和有趣的功能&#xff0c;与其他一些图形查看器不同&#xff0c;它们的全部“创造力”是基于功能克隆、窃取想法和来自ACDSee和/或IrfanView的整…

mac vscode安装dart

1.安装Dart 1.安装下载Dart的工具 官网&#xff1a;https://brew.sh/ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"如果遇到 zsh: command not found: brew /bin/zsh -c "$(curl -fsSL https://gite…