Hi all,
After updating from acegi 1.0.0 RC2 to 1.0.0 final we recognized a change of the implementation of AuthenticationProcessingFilter.
What happend:
We wanted to have a different start page for special users after logging into the system. We wrote an extension of the AuthenticationProcessingFilter which overwrites the successfulAuthentication method. Here is the implementation...
In acegi 1.0.0 final there was a change in the constants. The ACEGI_SECURITY_TARGET_URL_KEY no longer exists in 1.0.0 final. After reviewing we changed it to ACEGI_SAVED_REQUEST_KEY and compilation was successful.Code:protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, Authentication authResult) throws IOException { String targetUrl; if (authResult != null && authResult.getPrincipal() instanceof WlcClient) { WlcClient client = (WlcClient) authResult.getPrincipal(); if (client.isUserInRole(WlcConstants.WlcRoles.ADMIN_USER)) { targetUrl = request.getContextPath() + getDefaultAdminTargetUrl(); logger .info("Authenticated user is an administrator... redirect to admin page [" + targetUrl + "]..."); request.getSession().setAttribute(ACEGI_SAVED_REQUEST_KEY, targetUrl); } else if (client.isUserInRole(WlcConstants.WlcRoles.WL_ADMIN_USER)) { targetUrl = request.getContextPath() + getDefaultWlAdminTargetUrl(); logger .info("Authenticated user is an wl-administrator... redirect to admin page [" + targetUrl + "]..."); request.getSession().setAttribute(ACEGI_SAVED_REQUEST_KEY, targetUrl); } } super.successfulAuthentication(request, response, authResult); }
Now we have the following exception:
Can someone explain the change or give an alternativ to implement the described requirement (different start pages depending on the user's role)?Code:java.lang.ClassCastException: java.lang.String org.acegisecurity.wrapper.SavedRequestAwareWrapper.<init>(SavedRequestAwareWrapper.java:88) sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) java.lang.reflect.Constructor.newInstance(Constructor.java:494) org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:75) org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:216) org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:195) org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:148) org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:90) com.namics.publiconnect.wlc.web.filter.SiteContextFilter.doFilter(SiteContextFilter.java:91) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:137) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:75) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
Thanks and kind regard,
Sandro


