У меня настроена безопасность spring -с использованием базовой аутентификации и аутентификации на основе форм в соответствии с auto-config='true'
.
Я хотел бы, чтобы конечные точки под /api/**
НЕ использовали безопасность на основе формы. Другие конечные точки за пределами /api/**
должны использовать вход на основе формы. Я хотел бы, чтобы ответ 401
отправлялся на любой вызов этих конечных точек, которые не предоставили учетные данные в /api/**
.
ОБНОВЛЕНИЕ:Благодаря комментарию Люка Тейлора ниже я нашел следующее решение.
ПРИМЕЧАНИЕ:Этот метод можно применять только начиная с весны -безопасности 3.1.
Сначала я выделяю /api/**
. Мы никогда не создаем сеанс, хотя используем его, если он доступен, это обрабатывается create-session="never"
и использованием <session-management/>
.
<http pattern="/api/**" create-session="never" use-expressions="true">
<http-basic />
<session-management />
<intercept-url pattern="/api/**" access="hasRole('API_ACCESS')"/>
</http>
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/" access="permitAll"/>
<intercept-url pattern="/**" access="isAuthenticated()"/>
</http>