【问题标题】:Http requests don't hit my Spring Boot ControllerHttp 请求没有命中我的 Spring Boot 控制器
【发布时间】:2021-02-11 19:13:12
【问题描述】:

我的控制器已经工作了很长时间,但是当我回到我的 uni 项目修改我的服务层时,我的控制器 不会受到映射请求的影响强>。文件夹位置不是问题,因为它们的位置很好,而且以前一切正常。

这里是一个目标控制器的 sn-p:

@Controller
@RequestMapping("/notification")
public class NotificationController {

    @Autowired
    NotificationService notificationService;

    @GetMapping("/confirm/{tokenId}")
    public String confirm(@PathVariable String tokenId) {
        System.out.println("entering controller"); // da eliminare
        if(notificationService.confirm(tokenId))
            return "redirect:/notification/confirmation/success";
        else return "redirect:/notification/confirmation/failure";
    }

当我尝试访问我的控制器并显示 403 Whitelabel 错误页面时,从未打印出“进入控制器”的 sout 行。这是启动时的日志:

 .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.2.6.RELEASE)

2020-10-29 11:29:04.075  INFO 15152 --- [           main] it.polito.ai.lab2.Lab2Application        : Starting Lab2Application on daniele-Inspiron-5548 with PID 15152 (/home/daniele/IdeaProjects/applicazioni-internet/target/classes started by daniele in /home/daniele/IdeaProjects/applicazioni-internet)
2020-10-29 11:29:04.087  INFO 15152 --- [           main] it.polito.ai.lab2.Lab2Application        : No active profile set, falling back to default profiles: default
2020-10-29 11:29:05.318  INFO 15152 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2020-10-29 11:29:05.422  INFO 15152 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 95ms. Found 11 JPA repository interfaces.
2020-10-29 11:29:05.789  INFO 15152 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2020-10-29 11:29:05.793  INFO 15152 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2020-10-29 11:29:05.795  INFO 15152 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@736309a9' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2020-10-29 11:29:05.797  INFO 15152 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2020-10-29 11:29:05.800  INFO 15152 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2020-10-29 11:29:06.025  INFO 15152 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2020-10-29 11:29:06.033  INFO 15152 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2020-10-29 11:29:06.034  INFO 15152 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.33]
2020-10-29 11:29:06.123  INFO 15152 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2020-10-29 11:29:06.124  INFO 15152 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1975 ms
2020-10-29 11:29:06.249  INFO 15152 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2020-10-29 11:29:06.350  INFO 15152 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2020-10-29 11:29:06.388  INFO 15152 --- [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
2020-10-29 11:29:06.438  INFO 15152 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 5.4.12.Final
2020-10-29 11:29:06.560  INFO 15152 --- [           main] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
2020-10-29 11:29:06.709  INFO 15152 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL55Dialect
2020-10-29 11:29:07.633  INFO 15152 --- [           main] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2020-10-29 11:29:07.639  INFO 15152 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2020-10-29 11:29:07.674  WARN 15152 --- [           main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2020-10-29 11:29:08.779  INFO 15152 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2020-10-29 11:29:09.128  INFO 15152 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@55c581e4, org.springframework.security.web.context.SecurityContextPersistenceFilter@2b9615cb, org.springframework.security.web.header.HeaderWriterFilter@19b0a9f2, org.springframework.security.web.authentication.logout.LogoutFilter@65b1693c, it.polito.ai.lab2.security.JwtTokenFilter@eaa07bb, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@2eb03908, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@1cc42abe, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@6eae3730, org.springframework.security.web.session.SessionManagementFilter@3f2169e9, org.springframework.security.web.access.ExceptionTranslationFilter@1248f83, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@68dc2f53]
2020-10-29 11:29:09.188  INFO 15152 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2020-10-29 11:29:09.190  INFO 15152 --- [           main] it.polito.ai.lab2.Lab2Application        : Started Lab2Application in 5.8 seconds (JVM running for 6.722)
2020-10-29 11:30:18.794  INFO 15152 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2020-10-29 11:30:18.799  INFO 15152 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2020-10-29 11:30:18.816  INFO 15152 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 17 ms
2020-10-29 11:30:25.774  INFO 15152 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'
2020-10-29 11:30:25.780  INFO 15152 --- [extShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2020-10-29 11:30:25.784  INFO 15152 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2020-10-29 11:30:25.802  INFO 15152 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.

这里是 HTTP 请求:

http http://localhost:8080/notification/confirm/ae474af0-9d82-4cbb-b27b-f1446fc5c5a2
HTTP/1.1 403 
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Connection: keep-alive
Content-Type: application/json
Date: Thu, 29 Oct 2020 10:52:48 GMT
Expires: 0
Keep-Alive: timeout=60
Pragma: no-cache
Transfer-Encoding: chunked
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block

{
    "error": "Forbidden",
    "message": "Access Denied",
    "path": "/notification/confirm/ae474af0-9d82-4cbb-b27b-f1446fc5c5a2",
    "status": 403,
    "timestamp": "2020-10-29T10:52:48.418+0000"
}

以前在网上找到的文档对我没有帮助。谢谢大家。

【问题讨论】:

  • 您能否添加您正在执行的 GET 请求以访问该端点?
  • 你检查过你的 Spring Web Security 配置吗?看来您必须在此处添加路径/notification/*
  • 看起来你有 spring-security 拒绝访问你的端点,你得到一个 403。
  • 是的,这也是我的印象,我不明白为什么它拒绝我访问我还没有保护的控制器和方法。有时间试试,多谢建议。
  • 您应该配置 Spring Security 以忽略此映射。如果你根本没有配置 Spring Security,那么你应该从 maven/gradle 中移除依赖,因为 Spring Security 会自动阻止所有路由。

标签: java spring-boot rest controller mapping


【解决方案1】:

正如 burm87,Pandey Amit 和 Piotr Solarski 所说,这是一个关于 Spring Security 的问题。我必须在这些 URL 上明确应用 permitAll(),现在一切都好了。谢谢大家,你们的帮助很宝贵。

【讨论】:

    猜你喜欢
    • 2019-10-17
    • 1970-01-01
    • 2020-11-09
    • 2018-11-24
    • 2021-06-12
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多