/* * Copyright [2022] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the * "powered by wisemapping" text requirement on every single page; * you may not use this file except in compliance with the License. * You may obtain a copy of the license at * * http://www.wisemapping.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.wisemapping.security; import org.springframework.security.core.Authentication; import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; import org.springframework.security.web.savedrequest.HttpSessionRequestCache; import org.springframework.security.web.savedrequest.RequestCache; import org.springframework.security.web.savedrequest.SavedRequest; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class AuthenticationSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler { private final RequestCache cache; public AuthenticationSuccessHandler() { cache = new HttpSessionRequestCache(); this.setRequestCache(cache); } @Override public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws ServletException, IOException { SavedRequest savedRequest = cache.getRequest(request, response); if (savedRequest != null && savedRequest.getRedirectUrl().contains("c/restful")) { cache.removeRequest(request, response); } super.onAuthenticationSuccess(request, response, authentication); } @Override protected String determineTargetUrl(HttpServletRequest request, HttpServletResponse response) { String url = super.determineTargetUrl(request, response); // Prevent redirecting to rest services on login ... if (url.contains("c/restful")) { url = this.getDefaultTargetUrl(); } return url; } }