Задать вопрос
dshvechikov
@dshvechikov

Как сделать в Spring Security redirect после login'a?

Хочется, чтоб после логина пользователя возвращало на ту страничку, с которой он пришёл, а не постоянно на главную.


Есть примерно следующий конфиг
<bean id="rememberMeFilter" class="org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter">
        <constructor-arg name="rememberMeServices" ref="rememberMeServices"/>
        <constructor-arg name="authenticationManager" ref="authenticationManager" />
    </bean>

    <bean id="rememberMeServices" class="org.springframework.security.web.authentication.rememberme.PersistentTokenBasedRememberMeServices" >
        <constructor-arg name="tokenRepository" ref="persistentTokenRepository" />
        <constructor-arg name="userDetailsService" ref="customUserDetailService"/>
        <constructor-arg name="key" value="token"/>
        <property name="cookieName" value="token" />
        <property name="tokenValiditySeconds" value="864000" />
    </bean>

    <bean id="rememberMeAuthenticationProvider" class="org.springframework.security.authentication.RememberMeAuthenticationProvider">
        <constructor-arg name="key" value="token"/>
    </bean>

    <bean id="persistentTokenRepository" class="com.youtasked.spring.auth.MongoPersistentTokenRepositoryImpl" />

	<sec:http auto-config="true" use-expressions="true">
        <sec:session-management />
		<sec:form-login login-page="/login" authentication-failure-url="/login?error=true" login-processing-url="/j_spring_security_check"
                authentication-success-handler-ref="successLoginHandler"/>
		<sec:logout logout-success-url="/logout" delete-cookies="true" invalidate-session="true" />
        <sec:remember-me services-ref="rememberMeServices" use-secure-cookie="true" />
	</sec:http>

    <bean id="successLoginHandler" class="org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler" />

	<bean id="passwordEncoder" class="org.springframework.security.authentication.encoding.ShaPasswordEncoder" />
	<bean id="saltSource" class="org.springframework.security.authentication.dao.ReflectionSaltSource">
		<property name="userPropertyToUse" value="email" />
	</bean>
	<bean id="customUserDetailService" class="com.youtasked.core.user.CustomUserDetailService" />

	<sec:authentication-manager alias="authenticationManager">
		<sec:authentication-provider user-service-ref="customUserDetailService">
			<sec:password-encoder ref="passwordEncoder">
				<sec:salt-source ref="saltSource"></sec:salt-source>
			</sec:password-encoder>
		</sec:authentication-provider>
        <sec:authentication-provider ref="rememberMeAuthenticationProvider" />
	</sec:authentication-manager>



Там при логине добавлен SavedRequestAwareAuthenticationSuccessHandler, но я вычитал, что он и так вроде бы используется по умолчанию. В нём есть requestCache, откуда по идее должен получаться предыдущий запрос, но всё время возвращается null. Вообщем буду рад любым наводкам
  • Вопрос задан
  • 4586 просмотров
Подписаться 2 Оценить 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы