У меня есть приложение, которое использует SwitchUserFilter. В обычных случаях работа переключения прекращается, но если мы укажем URL выхода, когда пользователь фактически не переключился, пользователь выйдет из системы (ожидается), но когда он снова попытается войти в систему, приложение пытается перенаправить он до последней страницы, к которой он попытался получить доступ (то есть URL-адрес пользователя коммутатора) .. где снова пользователь обнаружил, что он не переключился, и поэтому возникает ошибка, пользователь выйдет из системы, и поэтому цикл продолжается ,Безопасность пружины: функциональность «переключателя пользователя» вызывает тупик, если мы выходим перед коммутатором
Следующая моя весна файл конфигурации:
<?xml version="1.0" encoding="UTF-8"?>
<!-- - Sample namespace-based configuration - -->
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd">
<global-method-security pre-post-annotations="enabled">
<!-- AspectJ pointcut expression that locates our "post" method and applies
security that way <protect-pointcut expression="execution(* bigbank.*Service.post*(..))"
access="ROLE_TELLER"/> -->
</global-method-security>
<http use-expressions="true">
<intercept-url pattern="/**" access="isAuthenticated()" />
<custom-filter after="FILTER_SECURITY_INTERCEPTOR" ref="switchUserProcessingFilter" />
<form-login />
<logout invalidate-session="true" logout-url="/do/logout" />
</http>
<!-- Usernames/Passwords are rod/koala dianne/emu scott/wombat peter/opal -->
<authentication-manager>
<authentication-provider>
<user-service id="userService">
<user name="rod" password="koala" authorities="supervisor, teller, user" />
<user name="dianne" password="emu" authorities="teller, user" />
<user name="scott" password="wombat" authorities="user" />
<user name="peter" password="opal" authorities="user" />
</user-service>
</authentication-provider>
</authentication-manager>
<beans:bean id="switchUserProcessingFilter"
class="org.springframework.security.web.authentication.switchuser.SwitchUserFilter">
<beans:property name="userDetailsService" ref="userService">
</beans:property>
<beans:property name="switchUserUrl" value="/switchUser" />
<beans:property name="exitUserUrl" value="/exitUser" />
<beans:property name="targetUrl" value="/index.jsp" />
</beans:bean>
</beans:beans>
Любые предложения о том, как я могу справиться с этим?
Практический случай может быть, когда я переключил пользователя, а сеанс истекает. Не зная, что сеанс завершен, пользователь пытается щелкнуть по URL-адресу «exit user», который затем перенаправляет его на страницу входа в систему, и вышеуказанный цикл продолжается.