问题:
在使用Springsecurity时使用postman访问登录失败能得到自定义错误信息401,但是使用浏览器访问的时候,当登录成功时能正常进入自定义配置类,但是失败是直接给浏览器返回一个状态码302,并且通过查看断点并不能进入配置类

原因:
springsecurity对未认证的访问会默认重定向一个接口,因前后端分离,所以不能实现前端自定义跳转到登陆页面的逻辑,实际修改方案就是后台修改springsecurity框架默认的302执行逻辑。

解决方法:
实现AuthenticationEntryPoint接口,覆写commence方法,修改返回状态值为401,修改配置。让前端去获取状态码执行前端的逻辑。

public class CustomAuthenticationEntryPoint implements AuthenticationEntryPoint {@Overridepublic void commence(HttpServletRequest request, HttpServletResponse response,AuthenticationException authException) throws IOException, ServletException {response.setStatus(HttpStatus.UNAUTHORIZED.value());}
}@Configuration
public class BrowserSecurityConfig extends AbstractChannelSecurityConfig {@Overrideprotected void configure(HttpSecurity http) throws Exception {applyPasswordAuthenticationConfig(http);http.apply(validateCodeSecurityConfig).and().apply(smsCodeAuthenticationSecurityConfig).and().apply(imoocSocialSecurityConfig).and().sessionManagement().invalidSessionStrategy(invalidSessionStrategy).maximumSessions(securityProperties.getBrowser().getSession().getMaximumSessions()).maxSessionsPreventsLogin(securityProperties.getBrowser().getSession().isMaxSessionsPreventsLogin()).expiredSessionStrategy(sessionInformationExpiredStrategy).and().and().logout().logoutSuccessHandler(onstepLogoutSuccessHandler).deleteCookies("JSESSIONID").and().authorizeRequests().antMatchers(securityProperties.getBrowser().getLoginPage(),securityProperties.getBrowser().getSignUpUrl()).permitAll().anyRequest().authenticated().and().cors().and().csrf().disable().exceptionHandling().authenticationEntryPoint(new CustomAuthenticationEntryPoint());}
}

主要注意的代码:

1.response.setStatus(HttpStatus.UNAUTHORIZED.value());
2..exceptionHandling().authenticationEntryPoint(new CustomAuthenticationEntryPoint());

Springsecurity使用浏览器登录失败返回302(跨域问题),前后端分离相关推荐

  1. 利用Nginx轻松实现Ajax的跨域请求(前后端分离开发调试必备神技)

    利用Nginx轻松实现浏览器中Ajax的跨域请求(前后端分离开发调试必备神技) 前言 为什么会出现跨域? 造成跨域问题的原因是因为浏览器受到同源策略的限制,也就是说js只能访问和操作自己域下的资源,不 ...

  2. 06-若依前后端分离项目跨域问题解决方式

    什么是跨域 跨域就是前后端分离项目前端无法把session等信息传递给后端服务器.跨域源自浏览器同源策略.同源策略是一种约定,同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互. ...

  3. 【python学习笔记】关于python Flask前后端分离跨域问题

    关于python Flask前后端分离跨域问题 前后端分离过程中,前后端对接测试难免遇到跨域问题.因为是个新司机,所以在我经过一天的测试,才找到解决办法=-= 第一种方法 from functools ...

  4. 前后端分离项目,如何解决跨域问题?

    跨域问题是前后端分离项目中非常常见的一个问题,举例来说,编程猫(codingmore)学习网站的前端服务跑在 8080 端口下,后端服务跑在 9002 端口下,那么前端在请求后端接口的时候就会出现跨域 ...

  5. boke | 前后端分离中使用JWT保持前端数据的持久化,并自动登录

    在boke后台登录系统中实现了自动登录的功能,这也是前后端分离的开发模式中最常见的一个问题,如何保持登录状态的持久化.今天就来通过实现自动登录来一步步理清前端数据持久化的思路. 一 实现思路 当用户首 ...

  6. springboot+shiro前后端分离过程中跨域问题、sessionId问题、302鉴权失败问题

    写在前面:2020年2月29号修改该文章,之前针对302鉴权失败问题的解决方案存在 "WebUtils.toHttp 往返回response写返回值的时候出现回写跨域问题".现已进 ...

  7. SpringSecurity前后端分离下对登录认证的管理

    本案例基于springboot2.0.4,只说对登录验证的管理,不涉及权限的管理.因为学习新东西一下子太多,很容易乱.        首先添加maven依赖,直接开启springboot自带的spri ...

  8. 浏览器同源策略,及跨域解决方案

    原文链接:浏览器同源策略,及跨域解决方案 一.Origin(源) 源由下面三个部分组成: 域名 端口 协议 两个 URL ,只有这三个都相同的情况下,才可以称为同源. 下来就以 "www.e ...

  9. 前后端分离单点登录SSO实现方案 淘宝、京东跨域获取Cookie、OAuth2、QQ客户端多种模式

    演示Demo站点 http://sso.exrick.cn 开源版Github地址 https://github.com/Exrick/x-boot) 开发文档 https://www.kanclou ...

最新文章

  1. vs2010设置boost开发环境
  2. hpm128无法共享打印_办公室打印机如何共享给同事使用呢?常见共享打印问题及解决方法...
  3. 静态变量和实例变量的区别
  4. php7安装kafka扩展(已经测试)
  5. 不行是谁决定的呢,明明你眼前就有这么多的可能啊
  6. [css] 你知道全屏滚动的原理是什么吗?它用到了CSS的哪些属性?
  7. [深度学习-实践]GAN入门例子-利用Tensorflow Keras与数据集CIFAR10生成新图片
  8. eclipse不能添加tomcat7的问题
  9. 我解决了net framework 4安装失败,提示找不到指定文件的问题
  10. 两个重要极限及相关推导极限
  11. maya餐具图片_有哪些价格低但是逼格高很文艺又实用的物品呢?
  12. 【MV】ルカルカ ナイトフィーバー 鼻血姬、爱川饭拍版
  13. 漫谈阿里那些大数据技术,大数据学习者必看
  14. 环境数据采集系统——中期总结
  15. 单位根检验、协整检验和格兰杰因果关系检验三者之间的关系
  16. MAC 移动硬盘文件显示灰色
  17. [预训练语言模型专题] 银色独角兽GPT家族
  18. C语言高考试卷分析模板,试卷分析模板
  19. 《PyInstaller打包实战指南》第八节 打包资源文件
  20. SCAU计算机网络综合性实验

热门文章

  1. (ROYOLE)全球首款柔性屏开发套件,柔宇RoKit终于来了!
  2. 6. EL 表达式:${运算表达式}
  3. 2023最新仿百度文库网站源码+UI简约大气
  4. Python数据分析之numpy的应用
  5. 设计模式Part3——简单工厂模式
  6. 虚拟人,会成为品牌下一次逆势的解药吗?
  7. 项目相关文档撰写注意事项
  8. 输入三个整数x,y,z,请把这三个数由小到大输出 (Java经典编程案例)
  9. 目标检测跟踪算法--传统方法
  10. 龙白滔 | DC/EP vs Libra,全球数字货币竞争正式拉开序幕