#java #spring-boot #rest #controller #mapping
#java #spring-boot #отдых #контроллер #сопоставление
Вопрос:
Мои контроллеры работают уже давно, но с тех пор, как я вернулся к своему проекту uni, модифицирующему мои уровни обслуживания, мои контроллеры не попадают под отображенные запросы. Это не проблема, связанная с положением папок, поскольку они хорошо расположены, и раньше все работало.
Вот фрагмент одного целевого контроллера:
@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";
}
Строка sout «ввод контроллера» никогда не распечатывается, когда я пытаюсь получить доступ к своему контроллеру, и отображается страница с ошибкой 403 Whitelabel. Это журнал при загрузке:
. ____ _ __ _ _
/\ / ___'_ __ _ _(_)_ __ __ _
( ( )___ | '_ | '_| | '_ / _` |
\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |___, | / / / /
=========|_|==============|___/=/_/_/_/
:: 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"
}
Предыдущая документация, найденная в Интернете, мне не помогла. Спасибо вам всем.
Комментарии:
1. Не могли бы вы добавить запрос GET, который вы выполняете, чтобы попасть в эту конечную точку?
2. Вы проверили конфигурацию веб-безопасности Spring. кажется, вам нужно добавить
/notification/*
туда путь.3. Похоже, что у вас есть spring-security, запрещающий доступ к вашей конечной точке, вы получаете 403.
4. Да, у меня тоже сложилось такое впечатление, я не понимаю, почему это лишает меня доступа к контроллерам и методам, которые я еще не защитил. Попробуйте поработать над этим в то время, спасибо за предложения.
5. Вы должны настроить Spring Security, чтобы игнорировать это сопоставление. Если вы вообще не настраивали Spring Security, вам следует удалить зависимость от maven / gradle, потому что Spring Security автоматически блокирует все маршрутизации.
Ответ №1:
Как сказали burm87, Пандей Амит и Петр Соларски, это проблема, связанная с безопасностью Spring. Мне пришлось явно применить PermitAll() к этим URL-адресам, и теперь все снова в порядке. Спасибо всем, ваша помощь была ценной.