SpringSecurity6从入门到实战之自定义登录页面

embedded/2024/12/22 21:51:54/

SpringSecurity6从入门到实战之自定义登录页面

在使用SpringSecurity进行认证操作的时候,可以发现默认提供的登录页面比较简陋.那么我们能否对登录页面进行自定义配置呢?接下来开始讲解应该如何进行配置

自定义登录页面流程

引入模板依赖

由于自定义登录页面会使用到前端相关技术,这里需要引入thymeleaf依赖

<!--thymeleaf-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

在 templates 中定义登录界面

<!DOCTYPE html>
<html lang="en" xmlns:th="https://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>自定义登录页面</title>
</head>
<body>
<h1>用户登录</h1>
<form method="post" th:action="@{/doLogin}">用户名:<input name="uname" type="text"/><br>密码:<input name="upass" type="password"/><br><input type="submit" value="登录"/>
</form>
</body>
</html>

定义登录页面 controller

新建LoginController

java">@Controller
public class LoginController {@RequestMapping("/login.html")public String login() {return "login";}
}

这里直接访问localhost:8080/login.html会发现还是会需要进行认证操作,因为我们在自定义配置中还没有进行放行

定义 Spring Security 配置类

java">@Configuration
@EnableWebSecurity
public class MySecurityConfig {// 自定义表单认证@Beanpublic SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {http.authorizeHttpRequests().requestMatchers("/test").permitAll() // 放行该资源.requestMatchers("/login.html").permitAll() // 放行该资源.anyRequest().authenticated() // 其它请求 必须先认证通过后 才能访问.and().formLogin() // 开启表单认证.loginPage("/login.html")  // 默认登录页.loginProcessingUrl("/doLogin")  // 处理登录请求的url.usernameParameter("uname") // 用户名文件框的名称.passwordParameter("upass") // 密码框的名称.and().csrf().disable();  //关闭 CSRF;return http.build();}
}

可以发现这里的配置项都是跟login.html中的内容一一对应

测试

image.png

这里就可以发现访问需要认证的/hello会跳转到我们自定义的登录页面来了

输入账号密码进行认证

image.png
image.png

最终发现通过认证操作可以访问/hello接口了


http://www.ppmy.cn/embedded/51268.html

相关文章

Centos7防火墙firewal常用命令介绍

前言 在CentOS 7中&#xff0c;firewalld是默认的防火墙管理工具&#xff0c;它提供了一种简化和易于使用的方法来配置和管理防火墙规则。 firewalld简介 引入&#xff1a;从CentOS 7开始&#xff0c;默认使用firewalld来配置防火墙&#xff0c;而不是传统的iptables。配置文…

Ansible Automation Platform(RHAAP2)架构中的四种节点及配置

在清单文件inventory中配置 #自动化控制节点设置 [automationcontroller] example.com #默认为混合节点 control.example node_typecontrol #作为控制节点&#xff0c;仅负责自动化的平台运行 hybrid.example node_typehybrid #作为混合节点&#xff0c;即是自动化平台又是任…

【设计模式深度剖析】【9】【行为型】【访问者模式】| 以博物馆的导览员为例加深理解

&#x1f448;️上一篇:备忘录模式 | 下一篇:状态模式&#x1f449;️ 设计模式-专栏&#x1f448;️ 文章目录 访问者模式定义英文原话直译如何理解呢&#xff1f; 访问者模式的角色类图代码示例 访问者模式的应用优点缺点使用场景 示例解析:博物馆的导览员代码示例 访问…

React+TS前台项目实战(十三)-- 全局常用响应式加载动画Loading组件封装

文章目录 前言Loading组件1. 功能分析2. 代码详细注释3. 使用方式4. 不同尺寸loading动画效果展示 总结 前言 高阶组件有几大优点&#xff0c;其中一个就是渲染劫持&#xff0c;如懒加载&#xff0c;是否显示该元素loading&#xff0c;这在项目中我们经常用到。毫无疑问&#…

谈谈面试常考题:懒加载,防抖,节流(方法实现详解)

前言 最近在学习中确实收获了挺多东西&#xff0c;其中我觉得有必要拿来进行分享一下的就是懒加载了&#xff0c;还有相关的防抖和节流。因为在浏览器中这些都是属于很常见的性能优化&#xff0c;面试也是常考题。话不多说&#xff0c;速度发车。 什么是懒加载&#xff1f;懒…

【云原生】Docker可视化工具Portainer使用详解

目录 一、前言 二、docker可视化管理概述​​​​​​​ 2.1 什么是docker可视化管理 2.1.1 Docker可视化管理常用功能 2.2 为什么需要docker可视化管理工具 2.3 docker可视化工具带来的好处 三、常用的docker容器可视化管理工具解决方案 3.1 Portainer 3.2 Rancher 3…

CSS从入门到精通——动画:简单的小动画

目录 任务描述 相关知识 创建动画 绑定元素 编程要求 任务描述 本关任务&#xff1a;用 CSS3 实现简单的小动画。效果图如下&#xff1a; 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;1.创建动画&#xff0c;2.绑定元素。 创建动画 用 keyframes来创建…

动手学深度学习(Pytorch版)代码实践 -卷积神经网络-25使用块的网络VGG

25使用块的网络VGG import torch from torch import nn import liliPytorch as lp import matplotlib.pyplot as plt# 定义VGG块 # num_convs: 卷积层的数量 # in_channels: 输入通道的数量 # out_channels: 输出通道的数量 def vgg_block(num_convs, in_channels, out_channel…