一篇文章带你使用-Spring-Security-完成前后端分离,JSON-进行交互

本文介绍了如何使用 Spring Security 在前后端分离的场景下,通过 JSON 进行登录、登录失败、未认证、注销登录的处理。通过自定义 AuthenticationSuccessHandler 和 AuthenticationEntryPoint,实现登录成功与未认证时返回 JSON 数据,避免重定向。同时讨论了登录失败回调,隐藏 UsernameNotFoundException 的原因。
摘要由CSDN通过智能技术生成

.successHandler((req, resp, authentication) -> {
Object principal = authentication.getPrincipal();
resp.setContentType(“application/json;charset=utf-8”);
PrintWriter out = resp.getWriter();
out.write(new ObjectMapper().writeValueAsString(principal));
out.flush();
out.close();
})

successHandler 方法的参数是一个 AuthenticationSuccessHandler 对象,这个对象中我们要实现的方法是 onAuthenticationSuccess。

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

HttpServletRequest
HttpServletResponse
Authentication

有了前两个参数,我们就可以在这里随心所欲的返回数据了。利用 HttpServletRequest 我们可以做服务端跳转,利用 HttpServletResponse 我们可以做客户端跳转,当然,也可以返回 JSON 数据。

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

配置完成后,我们再去登录,就可以看到登录成功的用户信息通过 JSON 返回到前端了,如下:

image

3. 登录擦除

登录失败也有一个类似的回调,如下:

.failureHandler((req, resp, e) -> {
resp.setContentType(“application/json;charset=utf-8”);
PrintWriter out = resp.getWriter();
out.write(e.getMessage());
out.flush();
out.close();
})

失败的回调也是三个参数,前两个就不用说了,第三个是一个 Exception,对于登录失败,会有不同的原因,Exception 中则保存了登录失败的原因,我们可以将之通过 JSON 返回到前端。

当然大家也看到,在微人事中,我还挨个去识别了一下异常的类型,根据不同的异常类型,我们可以给用户一个更加明确的提示:

resp.setContentType(“application/json;charset=utf-8”);
PrintWriter out = resp.getWriter();
RespBean respBean = RespBean.error(e.getMess

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值