文章目录
- 一、找到官网的身份认证(authentication)示例代码
- 二、实现最简单的身份验证
- 1、创建Spring Boot项目
- 2、创建IndexController
- 3、创建index.html
- 4、启动项目测试Controller
- 三、@{/logout}的作用
- 四、页面样式无法加载的问题
一、找到官网的身份认证(authentication)示例代码
官方代码示例:GitHub - spring-projects/spring-security-samples
我们使用的是传统的SpringMVC
按如下图顺序找到官方Demo
二、实现最简单的身份验证
1、创建Spring Boot项目
项目名:security-demo
JDK:17
SpringBoot:3.2.0(依赖了Spring Security 6.2.0)
Dependencies:Spring Web、Spring Security、Thymeleaf
选择这三个依赖,点击创建
2、创建IndexController
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地址重定向到登录页。
输入用户名:user,输入密码:在控制台的启动日志中查找初始的默认密码
点击"Sign in"进行登录,浏览器就跳转到了index页面。此时可以点击 Log Out 退出
此时如果点击logout2也会有同样的效果
区别:如果我们的应用程序发布在不同的应用程序下,那么thymeleaf这个标签会做自动的相对路径的处理,而普通的a标签不会。
三、@{/logout}的作用
通过使用@{/logout},Thymeleaf将自动处理生成正确的URL,以适应当前的上下文路径。这样,无论应用程序部署在哪个上下文路径下,生成的URL都能正确地指向注销功能。
例如:如果我们在配置文件中添加如下内容
# 将此应用程序部署在demo路径下
server.servlet.context-path=/demo
那么@{/logout}可以自动处理url为正确的相对路径
但是如果是普通的/logout,路径就会不正确
四、页面样式无法加载的问题
页面样式bootstrap.min.css是一个CDN地址,需要通过科学上网的方式访问
否则你的登录页会加载很久,并且看到的页面是这样的(登录按钮没有样式文件渲染,但是不影响登录功能的执行)