С Spring Security вы можете иметь конечные точки publi c api, доступные всем, и конечные точки, которые необходимо аутентифицировать перед получением ответа. В моем приложении пользователи проходят аутентификацию с помощью токена jwt. Прямо сейчас для авторизованных пользователей токен всегда проверяется, независимо от того, получает ли конечная точка publi c api запрос или нет.
Я хотел бы знать, как проверить, является ли текущая конечная точка конечной точкой publi c или аутентифицированной; таким образом я могу изменить код, чтобы проверка токена выполнялась только тогда, когда конечная точка требует аутентификации .
Я мог бы добавить все конечные точки publi c в хэш-набор и сравнить текущую конечную точку запроса с конечными точками publi c, но это неэффективно, а также некоторые конечные точки publi c содержат подстановочные знаки (**), так что сравнение будет немного хлопотным.
Это единственная информация, которую я смог найти:
Spring Security - проверьте, безопасен ли веб-адрес / protected
, но это примерно JSP.
Я тоже не могу получить информацию о запросе от SecurityContextHolder.getContext()
. Я предполагаю, что я должен получить информацию из org.springframework.security.config.annotation.web.builders.HttpSecurity
, потому что это тот же класс, который используется для определения конечных точек, не требующих аутентификации. (с помощью anthMatchers (). allowedall ()). Но я не знаю, какой метод вызывать, и я не уверен, что HttpSecurity можно даже автоматически подключить к другому классу. Кто-нибудь может дать мне несколько указателей?
Спасибо