SpringSecurity6 | 登录成功后的JSON处理

公众号封面

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉
🍎个人主页:Leo的博客
💞当前专栏: Java从入门到精通
✨特色专栏: MySQL学习
🥭本文内容:SpringSecurity6 | 登录成功后的JSON处理
📚个人知识库 :知识库,欢迎大家访问

学习参考 :

  • 讲师:孙帅老师
  • 课程:孙哥说SpringSecurity6

image-20231030235443828

1.前言

大家好,我是Leo哥🫣🫣🫣,接到上一节,我们学习通过SpringSecurity登录成功之后的一些页面的跳转。这篇文章我们主要来介绍一下我们通过自定义登录界面之后的一些细节处理。好了,话不多说让我们开始吧😎😎😎。

2.概述

在我们现在流行的前后端分离开发中,其实后端已经不需要再进行页面的跳转,前后端数据的交换都是通过JSON来进行流传的。

就比如,我们后端登录之后,只需要给前端返回一段JSON数据,告诉前端登录成功即可,具体怎么做呢,我们接着向下看。

3.JSON处理

3.1 自定义Handle

首先我们需要自定义AuthenticationSuccessHandle并实现他的一些方法。

package org.javatop.custom.config;import cn.hutool.core.lang.hash.Hash;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;import java.io.IOException;
import java.util.HashMap;/*** @author : Leo* @version 1.0* @date 2023-12-10 22:03* @description : 响应成功之后的JSON*/
public class MyAuthenticationSuccessHandle implements AuthenticationSuccessHandler {@Overridepublic void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {HashMap<String, Object> result = new HashMap<>();result.put("msg", "登录成功");result.put("code", 200);response.setContentType("application/json;charset=utf-8");new ObjectMapper().writeValue(response.getWriter(), result);}
}

3.2 进行配置

在我们的 **MvcCconfig **中进行handler配置。

.successHandler(new MyAuthenticationSuccessHandle()) // 成功之后的JSON处理

然后重启项目,进行测试。

image-20231210220826802

这个就是我们刚响应的JSON数据。

4.总结

以上便是本文的全部内容,本人才疏学浅,文章有什么错误的地方,欢迎大佬们批评指正!我是Leo,一个在互联网行业的小白,立志成为更好的自己。

如果你想了解更多关于Leo,可以关注公众号-程序员Leo,后面文章会首先同步至公众号。

公众号封面

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt6.5类库实例大全:Qt Creator快速入门

哈喽大家好&#xff0c;我是20YC编程小二&#xff01;扫码关注公众号&#xff0c;现在可免费领取《C程序员》在线视频教程哦&#xff01;#下面开始今天内容# 1. Qt Creator介绍 Qt Creator是一个轻量级的跨平台集成开发环境(IDE)&#xff0c;专为使用Qt框架进行应用程序开发而…

面试官:Jmeter 命令行压测 生成 HTML 测试报告,你真的会?

通常 Jmeter 的 GUI 模式仅用于调试&#xff0c;在实际的压测项目中&#xff0c;为了让压测机有更好的性能&#xff0c;多用 Jmeter 命令行来进行压测。 同时&#xff0c;JMeter 也支持生成 HTML 测试报告&#xff0c; 以便从测试计划中获得图表和统计信息。 以上定义的文件路…

SVN修改已提交版本的日志方法

1.在工做中一直是使用svn进行項目的版本控制的&#xff0c;有时候因为提交匆忙&#xff0c;或是忘了添加Log&#xff0c;或是Log内容有错误。遇到此类状况&#xff0c;想要在查看项目的日志时添加log或是修改log内容&#xff0c;遇到以下错误&#xff1a; Repository has not b…

【Java Web学习笔记】5 - XML

项目代码 https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/xml 零、在线文档 XML系列教程 一、XML引出 1.为什么需要XML 1.需求1 :两个程序间进行数据通信? 2.需求2:给一台服务器&#xff0c;做一个配置文件&#xff0c;当服务器程序启动时&#xff0c;去…

最新版ES8的client api操作,Elasticsearch Java client 8.0

Elasticsearch Java client 8.0 Elasticsearch&#xff1a;使用最新的 Elasticsearch Java client 8.0 来创建索引并搜索开始安装简单操作创建索引判断索引是否存在并创建索引&#xff08;构建器写法与lambda写法&#xff09;查询索引查询全部索引删除索引插入文档**使用原始 J…

【Java编程实现 9 * 9 乘法表格打印四种形态,七种打法】

Java编程实现 9 * 9 乘法表格打印四种形态&#xff0c;七种方法打印 废话篇打印 9 * 9 乘法表格嵌套for循环实现左下角打印嵌套for循环实现左上角打印嵌套for循环实现右上角打印嵌套for循环实现右下角打印 使用while循环打印 9 * 9 乘法表格&#xff08;一&#xff09;使用whil…

鸿蒙OS应用开发之语句

在程序开发中&#xff0c;已经有上面的运算符和数据类型了&#xff0c;可以满足了大部的需求&#xff0c;但是这些程序还是比较简单的计算和逻辑运算&#xff0c;如果需要复杂的计算和逻辑处理&#xff0c;就需要采用复杂逻辑程序块来处理了&#xff0c;也就是复杂条件语句才能…

【W5500】关于使用外部网络变压器的原理图设计

直接上原理图 链接也放一个吧【链接】 按照这个画&#xff0c;我实验在立创EDA上打了一个实验过是可以用的~ 画出来的板子长这个样子【就不公开原理图和PCB了&#xff0c;这个板子还是很容易画的】~ 注意在立创上找对网口&#xff0c;要无变压器的网口&#xff0c;相比TB卖的那…

小模型学习(1)-人脸识别

【写作背景】因为最近一直在研究大模型&#xff0c;在与客户进行交流时&#xff0c;如果要将大模型的变革性能力讲清楚&#xff0c;就一定要能将AI小模型的一些原理和效果讲清楚&#xff0c;进而形成对比。当然这不是一件简单的事情&#xff0c;一方面大模型分析问题的的本质原…

19 redis缓存数据同步问题

1、缓存穿透 指缓存和数据库中都没有的数据&#xff0c;而用户不断发起请求。由于缓存不命中&#xff0c;并且出于容错考虑&#xff0c;如果从存储层查不到数据则不写入缓存&#xff0c;这将导致这个不存在的数据每次请求都要到存储层去查询&#xff0c;缓存就没有意义了。 在…

C语言精选——选择题Day42

第一题 1. 下面程序输出的结果是&#xff08;&#xff09; #include <stdio.h> int main () {int x;x printf("I See, Sea in C");printf("x%d" , x); } A&#xff1a;2 B&#xff1a;随机值 C&#xff1a;都不是 D&#xff1a;15 答案及解析 D p…

7.题目:编号1531 快递分拣

题目: ### 这道题主要考察map,vector,string的综合运用单号和城市都可以用string类型存储 #include <bits/stdc.h> using namespace std;map<string,vector<string>> mp;vector<string> citys;int main(){ios::sync_with_stdio(0),cin.tie(0),cout.t…