首页 > 其他分享 >SpringSecurity自定义失败处理

SpringSecurity自定义失败处理

时间:2024-10-01 16:11:35浏览次数:6  
标签:http 自定义 class ResponseResult httpServletResponse SpringSecurity 失败 result publi

认证异常处理


@Component
public class Renzheng implements AuthenticationEntryPoint {
    @Override
    public void commence(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AuthenticationException e) throws IOException, ServletException {
        ResponseResult result=new ResponseResult<>(HttpStatus.UNSUPPORTED_MEDIA_TYPE.value(), "用户账号密码错误");
        WebUtils.renderString(httpServletResponse, JSON.toJSONString(result));
    }
}

授权异常处理


@Component
public class AccessDeniedExceptionImpl implements AccessDeniedHandler {
    @Override
    public void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AccessDeniedException e) throws IOException, ServletException {
        ResponseResult result=new ResponseResult<>(400,"授权失败");
        WebUtils.renderString(httpServletResponse,JSON.toJSONString(result));
    }
}

添加异常处理

@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Autowired
    private  JwtAuthenticationTokenFilter jwtAuthenticationTokenFilter;
    @Autowired
    private AccessDeniedExceptionImpl accessDeniedException;
    @Autowired
    private Renzheng renzheng;

@Bean
    public BCryptPasswordEncoder passwordEncoder(){
        return new  BCryptPasswordEncoder();
    }
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                //关闭csrf
                .csrf().disable()
                //不通过Session获取SecurityContext

                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and()
                .authorizeRequests()
                // 对于登录接口 允许匿名访问
                .antMatchers("/user/login").anonymous()
                // 除上面外的所有请求全部需要鉴权认证
                .anyRequest().authenticated();
        http.addFilterBefore(jwtAuthenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);
        http.exceptionHandling()
                //认证处理
                .authenticationEntryPoint(renzheng)
                //异常处理
                .accessDeniedHandler(accessDeniedException);
    }

标签:http,自定义,class,ResponseResult,httpServletResponse,SpringSecurity,失败,result,publi
From: https://www.cnblogs.com/fubai/p/18442937

相关文章

  • 【PostgreSQL】提高篇——如何创建和使用自定义函数和存储过程,包括 PL/pgSQL 语言的使
    数据库管理中,存储过程和自定义函数是非常重要的概念,尤其是在使用PostgreSQL这样的关系数据库管理系统时。它们允许开发者将复杂的业务逻辑封装在数据库中,从而提高应用程序的性能、可维护性和安全性。使用PL/pgSQL语言编写的存储过程和函数可以实现数据处理、事务控制和复......
  • 可以解决 PbootCMS 后台出现的“登入失败:表单提交校验失败,请刷新后重试!”的问题
    步骤一:切换PHP版本检查当前PHP版本使用命令行或SSH登录服务器,运行以下命令检查PHP版本:sh php-v切换PHP版本cPanel控制面板:登录cPanel控制面板。进入“软件”部分,找到“MultiPHPManager”。选择一个兼容的PHP版本(如PHP7.4或PHP8.0)......
  • PBOOTCMS后台出现“登入失败:表单提交校验失败,刷新后重试!”等情况怎么办?
    当你使用PbootCMS搭建的网站后台出现“登入失败:表单提交校验失败,请刷新后重试!”的问题时,可以尝试以下几种解决方案:解决方案方法一:切换PHP版本检查当前PHP版本使用命令行或SSH登录服务器,运行以下命令检查PHP版本:sh php-v切换PHP版本根据你的服......
  • PbootCMS默认面包屑导航样式修改及自定义的设置方法
    在使用PbootCMS建站时,如果你需要对系统默认的面包屑标签(Breadcrumb)样式进行修改,可以通过自定义标签参数来实现。下面详细介绍如何进行这些自定义操作。面包屑调用示例默认的面包屑调用方式如下:twig {pboot:position}自定义面包屑参数你可以使用以下参数来自定义面包......
  • 自定义类型:结构体,枚举,联合
    文章目录结构体**结构体声明****结构体的基础知识**结构体变量的定义和初始化结构体内存对齐修改默认对齐数百度笔试题:结构体传参位段什么是位段位段的内存分配3.2剩余空间利用的问题位段的跨平台问题总结:位段的应用枚举枚举类型的定义枚举的优点枚举的使用联合(共......
  • Winform控件优化之自定义控件的本质【从圆角控件看自定义的本质,Region区域无法反锯齿
    自定义控件的本质自定义控件的本质只有两点:重绘控件Region区域(圆角、多边形、图片等),这是整个控件的真实范围。缺点是Region无法抗锯齿,自定义的Region范围是有锯齿的,无法消除;此外新的Region还会和绘制的背景产生1像素的白边(在圆角或图形拐角部分),且几乎无法有效的消除。【后......
  • Qt项目中,在main.cpp中定义了一个自定义组件,但是在编译的时候报错`undefined reference
    1、问题描述我在测试Qt项目的main.cpp中编写了如下代码:classMyWidget1:publicQWidget{Q_OBJECT};//main程序入口argc命令行变量的数量argv命令行变量的数组intmain(intargc,char*argv[]){//应用程序对象,在Qt中应用程序对象有且仅有一个QAppl......
  • PbootCMS默认面包屑导航样式修改及自定义的设置方法
    在使用PbootCMS建站时,如果需要对系统默认的面包屑(breadcrumb)标签样式进行修改,可以通过自定义参数来实现。下面详细介绍如何使用 {pboot:position} 标签,并自定义相关的参数。自定义面包屑标签基本语法{pboot:position}[position:breadcrumb]{/pboot:position}......
  • PbootCMS出现登录失败,表单提交校验失败等情况怎么办?
    在使用PbootCMS过程中,可能会遇到一些登录问题,例如表单提交校验失败、登录界面锁定以及数据库目录权限写入不足等问题。以下是对这些问题的详细解决方案。一、表单提交校验失败问题描述:登入失败,表单提交校验失败。解决方法:检查服务器环境确认服务器环境是否符合Pboot......
  • 记录一次ssh 远程连接失败
    由来在编写自己的博客想法上退步,计划使用已有的博客架构.网上找到两个技术架构typechoandworldpress.使用了MrDoc过程按照指导,在腾讯云上免费领取到了一台机器后,使用putty无法远程登录,提示"nosupportedauthenticationmethodsavailable"我希望的效果是ro......