【Spring Security】2.实现最简单的身份验证

文章目录

  • 一、找到官网的身份认证(authentication)示例代码
  • 二、实现最简单的身份验证
    • 1、创建Spring Boot项目
    • 2、创建IndexController
    • 3、创建index.html
    • 4、启动项目测试Controller
  • 三、@{/logout}的作用
  • 四、页面样式无法加载的问题

一、找到官网的身份认证(authentication)示例代码

官方代码示例:GitHub - spring-projects/spring-security-samples

我们使用的是传统的SpringMVC

image-20240228220706330

按如下图顺序找到官方Demo

image-20240228220904244


二、实现最简单的身份验证

1、创建Spring Boot项目

项目名:security-demo

JDK:17

SpringBoot:3.2.0(依赖了Spring Security 6.2.0)

Dependencies:Spring Web、Spring Security、Thymeleaf

image-20240306100112001

选择这三个依赖,点击创建

image-20240306100216226


2、创建IndexController

image-20240306101211415

package com.atguigu.securitydemo.controller;

@Controller
public class IndexController {

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

3、创建index.html

在路径resources/templates中创建index.html

<html xmlns:th="https://www.thymeleaf.org">
<head>
  <title>Hello Security!</title>
</head>
<body>
<h1>Hello Security</h1>
<!--通过使用@{/logout},Thymeleaf将自动处理生成正确的URL,以适应当前的上下文路径。
这样,无论应用程序部署在哪个上下文路径下,生成的URL都能正确地指向注销功能。-->
<a th:href="@{/logout}">Log Out</a>
<a href="/logout">Log Out2</a>
</body>
</html>

4、启动项目测试Controller

浏览器中访问:http://localhost:8080/

**浏览器自动跳转到登录页面:**http://localhost:8080/login

SpringSecurity在刚开始运行的时候,它校验了我们的用户是否进行了身份认证,如果没有进行用户身份认证的话,默认情况下,会自动生成一个登录页,并且把我们的浏览器URL地址重定向到登录页。

image-20230410140908841

输入用户名:user,输入密码:在控制台的启动日志中查找初始的默认密码

image-20240306102818710

点击"Sign in"进行登录,浏览器就跳转到了index页面。此时可以点击 Log Out 退出

image-20240306102936785

image-20240306102959892

此时如果点击logout2也会有同样的效果

image-20240306105124570

区别:如果我们的应用程序发布在不同的应用程序下,那么thymeleaf这个标签会做自动的相对路径的处理,而普通的a标签不会。


三、@{/logout}的作用

通过使用@{/logout},Thymeleaf将自动处理生成正确的URL,以适应当前的上下文路径。这样,无论应用程序部署在哪个上下文路径下,生成的URL都能正确地指向注销功能。

例如:如果我们在配置文件中添加如下内容

# 将此应用程序部署在demo路径下
server.servlet.context-path=/demo

那么@{/logout}可以自动处理url为正确的相对路径

但是如果是普通的/logout,路径就会不正确

image-20240408105059163


四、页面样式无法加载的问题

页面样式bootstrap.min.css是一个CDN地址,需要通过科学上网的方式访问

image-20231130152247055

否则你的登录页会加载很久,并且看到的页面是这样的(登录按钮没有样式文件渲染,但是不影响登录功能的执行)

image-20231130152345471

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MATLAB源码-第36期】matlab基于BD,SVD,ZF,MMSE,MF,SLNR预编码的MIMO系统误码率分析。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1. MIMO (多输入多输出)&#xff1a;这是一个无线通信系统中使用的技术&#xff0c;其中有多个发送和接收天线。通过同时发送和接收多个数据流&#xff0c;MIMO可以增加数据速率和系统容量&#xff0c;同时提高信号的可靠性。…

顺子日期(StringBuffer)

题目 public class Main {static int[] date new int[] {0,31,28,31,30,31,30,31,31,30,31,30,31};public static boolean res(StringBuffer s) {String ss s.toString();//yyrrfor(int i0;i<2;i) {int x Integer.parseInt(s.charAt(i)"");int y Integer.par…

适配版图再扩大!忆联多项产品通过Intel VROC技术认证

近日&#xff0c;深圳忆联信息系统有限公司&#xff08;简称&#xff1a;忆联&#xff09;的数据中心级固态硬盘 UH711a以及企业级固态硬盘UH811a/UH831a与英特尔VROC 7.8完成兼容认证&#xff0c;测试期间&#xff0c;整体运行稳定&#xff0c;在功能、性能及兼容性方面表现良…

libevent源码解析-定时机制,信号处理,流量控制

概述 libevent的event&#xff0c;event_callback&#xff0c;event_base除了可以用来支持套接字的自动和手动分发&#xff0c;也可用来支持定时机制&#xff0c;信号处理&#xff0e;这里&#xff0c;我们补充对定时机制&#xff0c;信号处理的分析&#xff0e; libevent中的…

2024.4.4-day09-CSS 布局模型(标准流模型、浮动模型)

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 作业 2024.4.4-学习笔记1 CSS 布局模型1.1 标准流1.2 CSS 浮动1.3 去除塌陷 2…

golang es查询的一些操作,has_child,inner_hit,对索引内父子文档的更新

1.因为业务需要查询父文档以及其下子文档&#xff0c;搞了很久才理清楚。 首先还是Inner_hits,inner_hits只能用在nested,has_child,has_parents查询里面 {"query": {"nested": {"path": "comments","query": {"match…

QMC5883芯片I2C驱动开发指南

这个芯片纯国产挺好用的&#xff0c;电路很好设计&#xff0c;我这垃圾焊功&#xff0c;纯手焊&#xff0c;&#xff0c;居然能用。 第一部分 硬件连接 画的很简陋&#xff0c;看看就可以了。 第二部分 软件驱动 I2C的具体时序实现需要自己搞定&#xff01;&#xff01; 2…

【工作实践-10】uniapp打包前注意事项

1.代码是否为最新代码 当前所要打包的分支是否已包含各个分支最新代码&#xff0c;是否是最新版。 2.APP版本是否需要提升 若APP用于上架&#xff0c;每次更改APP版本需要提升。依据版本规范来提升版本号。 3.APP启动界面配置 4.APP打包模块配置是否已配置好所需功能&#x…

Node.js创建第一个web服务

如果用PHP来编写后端代码&#xff0c;需要用Apache或者Nginx的服务器,来处理客户的请求响应。对于Node.js时&#xff0c;不仅实现了应用&#xff0c;同时还实现了整个HTTP服务器. 安装 Node Snippets插件&#xff08;编程自带提示&#xff09; console.log(你好nodejs); //表…

【漏洞复现】泰博云平台 solr SSRF漏洞

0x01 产品简介 泰博云平台,就是指以电商集群的方式,通过供应链有效连接组成“商务云”生态系统,在产品、服务、营销推广等方面实现资源共享,“物”就是线下实体店网络,以众包模式,将行业制造商、分销商、零售商,和提供本土化设计、物流、安装的优质服务商,纳入统一的云…

Vue项目打包成exe文件(electron)

1.将写好的vue项目打包 1.1运行vue ui命令 输出目标文件 如果打开index.html是空白的&#xff0c;而且控制台报错获取xxx资源失败的问题&#xff0c;你需要在vue.config.js 上加一个命令&#xff0c;如果没有你需要创建一个。 2.下载electron官方示例 git clone https://gith…

华为ensp中PPP(点对点协议)中的PAP认证 原理和配置命令

作者主页&#xff1a;点击&#xff01; ENSP专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年4月8日14点31分 PPP协议&#xff08;Point-to-Point Protocol&#xff09;是点到点协议&#xff0c;是一种常用的串行链路层协议&#xff0c;用于在两个节点之间建立点…

2024年4月7日16:58:09答辩笔记

尚硅谷总结毕业设计编写&#xff1a;&#xff08;ppt尽量好看点&#xff0c;放图&#xff08;流畅图&#xff0c;时序图放一放&#xff09;&#xff0c;少字&#xff0c;&#xff09; 总结&#xff1a;&#xff08;这样给人体验感要好&#xff0c;语言、逻辑清晰&#xff09; 1…

【LeetCode热题100】118. 杨辉三角(动态规划)

一.题目要求 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 二.题目难度 简单 三.输入样例 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示…

笔记 | 编译原理L1

重点关注过程式程序设计语言编译程序的构造原理和技术 1 程序设计语言 1.1 依据不同范型 过程式(Procedural programming languages–imperative)函数式(Functional programming languages–declarative)逻辑式(Logical programming languages–declarative)对象式(Object-or…

Python基础教程:网络爬虫的工作原理

网络爬虫是一种数据收集的方式&#xff0c;广泛用于搜索引擎、市场分析等领域。 爬虫从一个或若干种子页面开始&#xff0c;获得种子页面上的链接&#xff0c;并根据需求来追踪其中的一些链接&#xff0c;达到遍历所有网页的目的。在抓取网页的过程中&#xff0c;一方面提取需…

「漫画」数据工程师面试常见问题之数据倾斜

话说&#xff0c;闹钟一响&#xff0c;现实照进梦想&#xff0c;又是李大虎面试找工作的一天。 李大虎心里一直有个想法&#xff0c;如果一天睡20个小时&#xff0c;然后这20个小时全做美梦&#xff0c;醒来的4个小时用来吃喝拉撒&#xff0c;这样岂不就和那些富二代一样了&am…

【机器学习入门】集成学习之梯度提升算法

系列文章目录 第1章 专家系统 第2章 决策树 第3章 神经元和感知机 识别手写数字——感知机 第4章 线性回归 第5章 逻辑斯蒂回归和分类 第5章 支持向量机 第6章 人工神经网络(一) 第6章 人工神经网络(二) 卷积和池化 第6章 使用pytorch进行手写数字识别 实操练习 使用Yolo模型进…

机器视觉系统光源的分类及选择

机器视觉系统 机器视觉系统是一种基于计算机视觉技术的智能系统&#xff0c;主要用于对图像或视频进行分析、处理和识别。一个典型的机器视觉系统通常由以下几个组成部分构成&#xff1a; 光源 机器视觉光源是机器视觉系统的关键组成部分之一。机器视觉光源直接影响图像质量&am…

Qt:窗口、按钮类、行编辑器、标签类

作业&#xff1a;QQ登录界面 mywidget.h #ifndef MYWIDGET_H #define MYWIDGET_H#include <QWidget> #include <QIcon> #include<QMovie> #include <QLabel> #include <QPushButton> #include <QLineEdit> class MyWidget : public QWid…