【问题标题】:Springboot @PreAuthorize conflict with @EnableTransactionManagementSpringboot @PreAuthorize 与 @EnableTransactionManagement 冲突
【发布时间】:2019-05-08 18:26:51
【问题描述】:

我知道这听起来有点奇怪,但是我们遇到了一个问题,当我们在应用程序中添加 @EnableTransactionManagement 时,所有带有 @PreAuthorize 的控制器都无法访问,swagger 无法发现它并调用 API(正确权限和角色)会遇到 404 not found 错误。

要解决此问题,请删除应用程序配置中的@EnableTransactionManagement 或删除控制器中的@PreAuthorize,但无论哪种方式都不是最终解决方案。

所以我想问一下是否有专家知道造成这种情况的原因以及我们需要做些什么才能使事情正常进行,因为我们都需要在应用程序中进行交易和预授权。

【问题讨论】:

  • 我建议您将调试器设置为控制器的 Trace。它将显示是否正在使用 RequestMappingHandlerMapping 映射映射以显示信息。如果您在 application.properties 中使用 spring-boot 设置“logging.level.org.springframework.web=TRACE”。在控制台中,它将记录映射;即 com.user.UserController {GET /user/{userId}}
  • 以下可能会有所帮助。 forum.spring.io/forum/spring-projects/web/…

标签: java spring spring-boot pre-authentication


【解决方案1】:

原来这个问题可以通过升级到spring boot 2.x版本来解决

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.1.RELEASE</version>
</parent>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 2017-12-09
    • 2013-10-21
    • 2020-08-19
    • 2010-12-10
    • 2018-04-02
    • 2021-10-23
    相关资源
    最近更新 更多