#spring #session #spring-mvc #spring-security #url-redirection
#весна #сеанс #spring-mvc #spring-security #перенаправление
Вопрос:
Я использую Spring Security для разработки веб-приложений. Я не хочу разрешать пользователям регистрироваться, пока они уже вошли в систему.
Итак, предположим, что есть URL для регистрации /registration
и для домашней страницы /home
.
Теперь я хочу перенаправить, /home
если пользователь попытается нажать /registration
во время сеанса. Возможно ли это с помощью spring-security
? Я могу проверить сеанс в методе контроллера и перенаправить вручную…это я знаю. но есть ли какая-либо конфигурация с spring-security? Спасибо.
Комментарии:
1. Настройте анонимный доступ и разрешите доступ только к регистрационной части вашего веб-сайта для анонимных пользователей. Если аутентифицированный пользователь попытается это сделать, он получит страницу с отказом в доступе. Это не перенаправление, но это то, что вы можете сделать в Spring security.
2. Привет, спасибо @M. Deinum, это не совсем то, что я хочу .. но информация, которой вы поделились, действительно полезна. Ценю 🙂 Спасибо
Ответ №1:
Да, вы можете сделать это только с помощью Spring Security. Добавьте новый элемент security: http перед существующим следующим образом:
<security:http pattern="/registration" access-denied-page="/home" entry-point-ref="forbiddenEntryPoint">
<security:intercept-url pattern="/registration" access="ROLE_ANONYMOUS"/>
</security:http>
<bean id="forbiddenEntryPoint" class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint"/>
Реализация точки входа на самом деле не имеет значения, потому что она не будет вызвана. Это просто обязательно определить.
Теперь система будет отслеживать URL /registration
-адрес, и когда к нему обращается пользователь без ROLE_ANONYMOUS
(= аутентифицированный пользователь), он будет /home
вместо этого обслуживать контент.