资讯专栏INFORMATION COLUMN

spring security自定义AuthenticationEntryPoint

赵春朋 / 2548人阅读

摘要:序本文介绍下如何自定义自定义默认情况下登陆失败会跳转页面,这里自定义,同时判断是否请求,是请求则返回,否则跳转失败页面设置

本文介绍下如何自定义AuthenticationEntryPoint

自定义AuthenticationEntryPoint
public class UnauthorizedEntryPoint implements AuthenticationEntryPoint {
    @Override
    public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException {
        if(isAjaxRequest(request)){
            response.sendError(HttpServletResponse.SC_UNAUTHORIZED,authException.getMessage());
        }else{
            response.sendRedirect("/login");
        }

    }

    public static boolean isAjaxRequest(HttpServletRequest request) {
        String ajaxFlag = request.getHeader("X-Requested-With");
        return ajaxFlag != null && "XMLHttpRequest".equals(ajaxFlag);
    }
}

默认情况下登陆失败会跳转页面,这里自定义,同时判断是否ajax请求,是ajax请求则返回json,否则跳转失败页面

设置UnauthorizedEntryPoint
@Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .exceptionHandling().authenticationEntryPoint(new UnauthorizedEntryPoint())
                .and()
                .csrf().disable()
                .authorizeRequests()
                .antMatchers("/css/**", "/js/**","/fonts/**").permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin()
                .loginPage("/login")
                .permitAll()
                .and()
                .logout()
                .logoutUrl("/logout")
                .permitAll();
    }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/11298.html

相关文章

  • Spring Security 进阶-细节总结

    摘要:但是我们最好不要在里面对他进行处理,而是放到配置的权限异常来处理。记得配置登录认证前和过程中的一些请求不需要身份认证。登录认证失败不能直接抛出错误,需要向前端响应异常。 关于 Spring Security 的学习已经告一段落了,刚开始接触该安全框架感觉很迷茫,总觉得没有 Shiro 灵活,到后来的深入学习和探究才发现它非常强大。简单快速集成,基本不用写任何代码,拓展起来也非常灵活和强...

    LinkedME2016 评论0 收藏0
  • spring security ajax登录及返回

    摘要:返回总共需要处理个地方,一个是异常的处理,需要兼容请求,一个是成功返回的处理,一个是失败返回的处理。这里就是拦截,获取提交的参数,然后交给去认证。之后就是走后续的,如果成功,则会进行相应的配置。动态配置权限笔记自定义 序 本文讲述一下如何自定义spring security的登录页,网上给的资料大多过时,而且是基于后端模板技术的,讲的不是太清晰,本文给出一个采用ajax的登录及返回的前...

    ideaa 评论0 收藏0
  • 统一认证 - Apereo CAS 客户端的集成以及小结

    摘要:所以客户端的集成主要是单点登录的集成,客户端指定需要做安全认证的页面,然后的安全包检测校验用户登录情况,并自动与登录页面进行跳转交互。提供了很多配置的方式,有,,以及其他可查官网。但高度自由的一如既往的,没有提供可视化操作的界面。 前两篇介绍了Apereo CAS以及服务器端的安装,但还不够完整,服务端还没有Application真正用起来呢!这篇文章将介绍怎么用起来 集成的目的 客户...

    AbnerMing 评论0 收藏0
  • SpringBoot+SpringSecurity+jwt整合及初体验

    摘要:进行下一项配置,为了区分必须加入。另起一行,以示尊重。这行代码主要是用于验证,后面再说。然后跑下接口,发现没问题,正常打印,说明主体也在上下文中了。说明这会上下文环境中我们主体不存在。所说以,主体数据生命周期是一次请求。 showImg(https://segmentfault.com/img/bVbtoG1?w=1600&h=900); 原来一直使用shiro做安全框架,配置起来相当...

    dackel 评论0 收藏0
  • 使用Spring Security中遇到的Preflight请求和跨域的问题

    摘要:首先遇到的就是跨域问题,但是在携带请求过程中出现了服务端获取不到情况。浏览器将请求分成两类简单请求和非简单请求。而浏览器对这两种请求的处理是不一样的。 背景 在一个前后端分离开发的项目中,使用SpringSecurity做安全框架,用JWT来实现权限管理提升RESTful Api的安全性。首先遇到的就是跨域问题,但是在携带jwt请求过程中出现了服务端获取不到jwt情况。 跨域问题 在开...

    shengguo 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<