Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Redirect after login (Spring security on GAE)

I am having some troubles making my login redirect to the same place always. I have done something like this

<http auto-config="true" use-expressions="true" entry-point-ref="gaeEntryPoint" >
    <intercept-url pattern="/_ah/login" access="permitAll"/>
    <intercept-url pattern="/**" access="isAuthenticated()"/>
    <custom-filter position="PRE_AUTH_FILTER" ref="gaeFilter"/>
    <form-login authentication-success-handler-ref="authSuccessHandler"/>
</http>

<beans:bean id="authSuccessHandler"
            class="dk.lindhardt.arbejdsfordeling.server.security.AuthenticationSuccessHandlerImpl"/>

And

public class AuthenticationSuccessHandlerImpl implements AuthenticationSuccessHandler {

   public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) 
   throws IOException, ServletException {
       if (authentication != null && authentication.isAuthenticated()) {
           response.sendRedirect(OrganizationListServlet.URL);
       }
   }

 }

It never gets into this method above. How do I make it do that?

Edit: I was following this guide http://blog.springsource.com/2010/08/02/spring-security-in-google-app-engine/

like image 911
AnAmuser Avatar asked Mar 01 '11 17:03

AnAmuser


2 Answers

You shouldn't need to have that servlet there that then does the redirect. You can have the redirect in the config itself.

<http auto-config="true">   
    <intercept-url pattern="/app/login" filters="none" />
    <form-login 
        login-page="/app/login" 
        login-processing-url="/app/dologin" 
        authentication-failure-url="/app/login?login_error=1" 
        default-target-url="/app/home"/>
</http>
like image 65
Scott Avatar answered Oct 09 '22 18:10

Scott


I think we can extend SimpleUrlAuthenticationSuccessHandler and call super.onAuthenticationSuccess() method to use DefaultRedirectStrategy. The modified code will be:

public class AuthenticationSuccessHandlerImpl extends SimpleUrlAuthenticationSuccessHandler {
       @Override
   public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) 
   throws IOException, ServletException {
       if (authentication != null) {
       setDefaultTargetUrl(OrganizationListServlet.URL);
              super.onAuthenticationSuccess(request, response, authentication);
       }

   }

 }
like image 28
Ritesh Avatar answered Oct 09 '22 18:10

Ritesh