Можно ли перенаправить на домашнюю страницу, если сеанс работает в режиме реального времени с использованием Spring-Security?

#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 вместо этого обслуживать контент.