Spring Security -- 前后端分离时的安全处理方案

本文详细介绍了在前后端分离的开发模式下,如何使用Spring Security处理安全性问题。主要内容包括认证成功、失败、退出登录和未认证时的处理方案,通过JSON数据进行前后端交互。
摘要由CSDN通过智能技术生成

前言

今天就带大家来学习一下在前后端分离的开发模式下,如何保护我们项目的安全。有的小伙伴会问,啥是前后端分离啊?如果你对此一无所知, 一一哥 只能建议你先查阅一下相关资料,本文 只能带你简单了解一下前后端分离的概念,毕竟今天我们是在讲解如何保证安全性的。

还有的小伙伴会说,前后端分离有什么了不起,为啥就需要单独处理?它和前后端不分离时有什么不同?那么就让我们带着这些疑问来开始今天的内容吧!

一. 前后端分离开发模式

1. 前后端分离简介

我们还是先来了解一下前后端分离这种开发模式吧,看看到底什么是前后端分离!

现在企业开发中,前后端分离已成为互联网项目开发的业界标准方式, 其核心思想就是前端 HTML 页面通过 AJAX,调用后端的 RESTFUL API 接口,并使用 JSON 数据进行交互。

该方式可以有效的在前后端项目之间进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如 浏览器,车载终端,安卓,IOS 等)打下坚实的基础。

所以在前后端分离这样的开发模式下,前后端的交互都是通过 JSON 来进行数据传递的,无论登录成功还是失败,都不会有服务端跳转或者客户端跳转之类的操作。

也就是说无论登录成功还是失败,服务端都会返回一段登录成功或失败的 JSON 信息给前端,前端收到 JSON 之后来决定是该跳转到成功界面还是失败界面,和后端没有关系。

通俗的说,就是在前后端分离模式中,原先的前端页面和 Java 代码是在一个项目里面,现在分开了!前端项目负责各种页面及前端业务的实现,后端项目负责后端业务的实现,在后端项目中没有任何页面。前后端之间利用 JSON 作为信息的载体,进行信息的传输和交互。

现在你明白啥是前后端分离了吧?

二. 认证处理时的相关 API

我们了解了前后端分离的开发模式之后,接下来我带各位学习一下 Spring Security 提供了哪些 API,可以帮助我们处理前后端分离时的开发。

1. 页面跳转的相关 API

1.1 登录成功时的跳转 API

我们在之前的章节讲解表单认证时,处理登录成功时,跳转到某个页面的 API 是如下两个方法:

  • defaultSuccessUrl

  • successForwardUrl

以上两个方法都是用来配置跳转地址的,适用于前后端不分离时的开发。

1.2 登录失败时的跳转 API

处理登录失败时,跳转页面的 API 是如下两个方法:

  • failureUrl()

  • failureForwardUrl()

以上两个方法也是用来配置跳转地址的,同样适用于前后端不分离时的开发。

2. 返回 JSON 格式的处理器

上面的两类方法,无论是认证成功还是认证失败,都是在前后端不分离时的处理方案,直接从 Java 后端跳转到某个页面上。那么在前后端分离时,Java 后端项目中,根本就没有页面,往哪跳啊?有的小伙伴说,既然没有页面,就不跳了呗。呵呵,那怎么行!

在前后端分离模式下,既然后端没有页面,页面都在前端,那就可以考虑使用 JSON 来进行信息交互了,我们把认证成功或认证失败的信息,以 JSON 的格式传递给前端,由前端来决定到底该往哪个页面跳转就好了。

如果我们要返回 JSON 格式的信息,有如下相关方法:

  • successHandler()

  • failureHandler()

  • logoutSuccessHandler()

  • authenticationEntryPoint()

  • ......

三. 认证成功时的处理方案

接下来 **一一哥 **先带各位实现认证成功时的处理方案,我们先看看相关的方法及其核心参数,即 successHandler()和 onAuthenticationSuccess 参数。

1. successHandler()方法

successHandler()方法的功能十分强大,甚至也囊括了 defaultSuccessUrl()和 successForwardUrl() 的功能。successHandler()方法的参数是一个 AuthenticationSuccessHandler 对象,这个对象中我们要实现的方法是 onAuthenticationSuccess()。

2. onAuthenticationSuccess 参数

onAuthenticationSuccess() 方法中有三个参数,分别是:

  • HttpServletRequest: 利用该参数我们可以实现服务端的跳转;

  • HttpServletResponse: 利用该参数我们可以做客户端的跳转,也可以返回 JSON 数据;

  • Authentication: 这个参数则保存了我们刚刚登录成功的用户信息。

  • </
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值