当前位置: 首页 > 面试题库 >

Spring MVC Spring安全性和错误处理

赵嘉悦
2023-03-14
问题内容

我正在使用ResponseEntityExceptionHandler全局处理错误,并且几乎可以正常工作,只是我想用spring处理错误的请求。通过任何逻辑,handleNoSuchRequestHandlingMethod都应处理此问题,但是总是要进行处理

HTTP Status 404 -
type Status report
message
description The requested resource is not available.
Apache Tomcat/7.0.37

在控制台中启用调试时,我刚刚得到以下信息:

WARN:org.springframework.web.servlet.PageNotFound-找不到带URI的HTTP请求的映射

只是为了通过处理澄清一下,我的意思是我要返回JSON。

知道如何处理吗?


问题答案:

DispatcherServlet类; 它发送错误响应而无需打扰调用异常处理程序(默认情况下)。

由于4.0.0.RELEASE这种行为可以简单地改变与throwExceptionIfNoHandlerFound参数:

设置在找不到此请求的处理程序时是否引发NoHandlerFoundException。然后可以使用HandlerExceptionResolver@ExceptionHandler控制器方法捕获此异常。

XML配置:

<servlet>
    <servlet-name>rest-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>throwExceptionIfNoHandlerFound</param-name>
        <param-value>true</param-value>
    </init-param>
</servlet>

基于Java的配置:

public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    void customizeRegistration(ServletRegistration.Dynamic registration) {
        registration.setInitParameter("throwExceptionIfNoHandlerFound", "true");
    }
    ...
}

然后NoHandlerFoundException可以这样处理:

@ControllerAdvice
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {

    @Override
    ResponseEntity handleNoHandlerFoundException(NoHandlerFoundException ex,
            HttpHeaders headers, HttpStatus status, WebRequest request) {
        // return whatever you want
    }
}


 类似资料:
  • 问题内容: 使用node / express-我想从请求标头中获取一些JSON,但我想安全地做到这一点。 如果由于某种原因它不是有效的JSON,那很好,它可以返回false或其他任何值,它将拒绝请求并继续执行。问题是,如果它不是有效的JSON,则会引发语法错误。通常,我希望语法错误能够爆发,但在这种情况下不希望。 我是否会刮取堆栈并检查来自该特定模块的错误解析调用,如果是这种情况,它将忽略它?这似

  • 我想使用MongoDB用NestJs和TypeORM创建一个应用程序。假设我有一个实体,除了ID字段外,还有两个唯一的字段 当我想用已经存在的或创建一个新模块时,我得到了以下异常错误 因此,在catch语句中,我必须处理传入的错误。我要做的是 TypeORM是否公开预制异常?是否有我可以使用的枚举?获取这些TypeORM数据库错误的好方法是什么? 这里似乎列出了一些错误 https://githu

  • 问题如下。我通过Keycloak承载spring安全实现了这样的登录 公共类KeycloakSecurityConfiguration扩展KeycloakWebSecurityConfigurerAdapter{ } ,当我发送授权请求标头为空时,keycloak抛出错误401。我无法通过@ExceptionHandler这样捕捉到: @ExceptionHandler(RuntimeExcept

  • 我正在使用Apollo与用React编写的Web应用程序中的GraphQL服务器进行交互。我试图在应用程序中实现错误处理,并依赖于apollo-link-error。 现在,我需要处理两类错误: 可以在执行Apollo查询或变异的组件中本地处理的错误,即需要在其上显示上下文错误信息的无效表单字段 可以全局处理的错误,例如,通过在页面的某个位置显示toast通知来显示错误详细信息 显然,一旦错误在本

  • 我正在学习如何使用spring安全和angular进行登录验证的教程,但每当我运行angular程序并尝试登录时,我会得到一个401错误。我觉得这是一个cors问题,创建了一个cors过滤器类,这是一个类似问题的解决方案,但我仍然得到相同的错误。登录详细信息是正确的,因为我使用相同的凭据登录到localhost:8080,用于后端,但当我尝试使用前端登录时,在索引中出现以下错误。 错误: 请求UR

  • 安全性错误配置在安全性设置被定义,实现和维护为默认设置时出现。良好的安全性要求为应用程序,Web服务器,数据库服务器和平台定义和部署安全配置。使软件保持最新同样重要。 威胁代理 - 匿名外部攻击者以及拥有自己帐户的用户可能会试图破坏系统。 攻击者的方法 - 访问默认帐户,未使用的页面,未修补的漏洞,未受保护的文件和目录以获得未经授权的访问。 安全弱点 - 可以发生在任何级别 - 平台,Web服务器