Spring Security 注销功能|学习笔记

简介: 快速学习 Spring Security 注销功能

开发者学堂课程【Spring Security知识精讲与实战演示(一)Spring Security注销功能】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/730/detail/13036


Spring Security 注销功能

 

退出注销登录操作,即是注销。当我们点击注销,来到登录页面。虽然我们已经点击了注销,但是当我们再登陆,再访问时,还是可以直接访问,此时刚刚的注销操作是无效的,这是个假动作。我们在 pages 中的 header.jsp 里可以找到 login.jsp,

image.png

它是固定跳转到这里,所以此时它是不行的。我们可以把 login.jsp 改成 logout,此时这里的 logout 不是我们补充写的注销,是程序写的注销,后在RUN离进行刷新,再返回主业进行刷新,防止进行页面有缓存。当我们进行刷新后发现之前的在线已被清除。当我们再次进行登录时,再次点击注销,我们会发现页面显示 logout 不存在,

image.png

其实 logout 没有找到的原因并不是没有点击 logout,是因为在header 文件中,把csrf拦截开启了,只要 csrf 开启,默认情况下,logout 注销功能也不能使用 get 方式。此时是默认 get 方式,它认为注销对网站是具有一定危害性的,因为当它正在搜索时,我们把网站退出。所以它会要求你必须使用 post 方式。

所以我们刚刚用的 <%--href="${pageContext. request. contextPath)/logout"class="btn btn-default btn-flat">注销</ a>--%)就使用不了了,我们可以把它删除掉。

可以书写上form action="$ {pageContext.request. contextPath}/Iogout" method="post">

<input type="submit”value=“注销”>。

此时,当我们进行刷新,如果把 csrf  拦截关闭,即 disabled="true"处于放开状态,我们发现a标签中的get存在,是可以通过的,因为本来就无安全性可言。

当我们登录 ITCAST 后台管理系统,再次点击注销,这次是403,

image.png

在上述中我们改成 post 需要经过csrf和type,经过 csrf 需要我们在 <%@page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> 后添加动态标签 <%@taglib uri=http://www.springframework.org/security/tags prefix="security"%。

之后在 <form action="${pageContext.request.contextPath}logout" method="post">后添加 <security:csrfInput/> 就携带了 csrf 的token。

我们在 div.navbar-custom-menu 中找到 Invalid CSRF token found for http://localhost:8080/logout。在nav.navbar.navbar-static-top中会有一个csrffilter.class,点击进入,我们会发现有 Invalid CSRF token found for,可以证明我们此时必须携带 token。http://localhost:8080/logout 可以看出我们没有携带 token。此时,我们返回到run进行刷新,当刷新完成后,再次登录ITCAST后台管理系统,登录完成后点击右上角 user,点击注销,页面会返回在登录 ITCAST 后台管理系统页面。注销功能需要我们注意的一点是,如果我们开启了 csrf Input,我们可以随意填写。若我们使用了 csrf Input,切记要加 token,若不加就会出错。

相关文章
|
JSON 安全 Java
什么是JWT?如何使用Spring Boot Security实现它?
什么是JWT?如何使用Spring Boot Security实现它?
2054 5
|
2月前
|
搜索推荐 JavaScript Java
基于springboot的儿童家长教育能力提升学习系统
本系统聚焦儿童家长教育能力提升,针对家庭教育中理念混乱、时间不足、个性化服务缺失等问题,构建科学、系统、个性化的在线学习平台。融合Spring Boot、Vue等先进技术,整合优质教育资源,提供高效便捷的学习路径,助力家长掌握科学育儿方法,促进儿童全面健康发展,推动家庭和谐与社会进步。
|
2月前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
443 2
|
9月前
|
监控 Java 应用服务中间件
微服务——SpringBoot使用归纳——为什么学习Spring Boot
本文主要探讨为什么学习Spring Boot。从Spring官方定位来看,Spring Boot旨在快速启动和运行项目,简化配置与编码。其优点包括:1) 良好的基因,继承了Spring框架的优点;2) 简化编码,通过starter依赖减少手动配置;3) 简化配置,采用Java Config方式替代繁琐的XML配置;4) 简化部署,内嵌Tomcat支持一键式启动;5) 简化监控,提供运行期性能参数获取功能。此外,从未来发展趋势看,微服务架构逐渐成为主流,而Spring Boot作为官方推荐技术,与Spring Cloud配合使用,将成为未来发展的重要方向。
364 0
微服务——SpringBoot使用归纳——为什么学习Spring Boot
|
7月前
|
消息中间件 缓存 NoSQL
基于Spring Data Redis与RabbitMQ实现字符串缓存和计数功能(数据同步)
总的来说,借助Spring Data Redis和RabbitMQ,我们可以轻松实现字符串缓存和计数的功能。而关键的部分不过是一些"厨房的套路",一旦你掌握了这些套路,那么你就像厨师一样可以准备出一道道饕餮美食了。通过这种方式促进数据处理效率无疑将大大提高我们的生产力。
256 32
|
6月前
|
安全 Java 数据库
Spring Boot 框架深入学习示例教程详解
本教程深入讲解Spring Boot框架,先介绍其基础概念与优势,如自动配置、独立运行等。通过搭建项目、配置数据库等步骤展示技术方案,并结合RESTful API开发实例帮助学习。内容涵盖环境搭建、核心组件应用(Spring MVC、Spring Data JPA、Spring Security)及示例项目——在线书店系统,助你掌握Spring Boot开发全流程。代码资源可从[链接](https://pan.quark.cn/s/14fcf913bae6)获取。
1046 2
|
7月前
|
安全 Java API
Spring Boot 功能模块全解析:构建现代Java应用的技术图谱
Spring Boot不是一个单一的工具,而是一个由众多功能模块组成的生态系统。这些模块可以根据应用需求灵活组合,构建从简单的REST API到复杂的微服务系统,再到现代的AI驱动应用。
|
8月前
|
Java Spring
Spring框架的学习与应用
总的来说,Spring框架是Java开发中的一把强大的工具。通过理解其核心概念,通过实践来学习和掌握,你可以充分利用Spring框架的强大功能,提高你的开发效率和代码质量。
204 20

热门文章

最新文章