package org.springblade.auth.config; import org.apache.logging.log4j.util.Strings; import org.springframework.security.core.Authentication; import org.springframework.security.web.authentication.AuthenticationSuccessHandler; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; import java.util.Map; import static org.springframework.security.web.context.HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY; public class CustomAuthenticationSuccessHandler implements AuthenticationSuccessHandler { private String redirectUrl; private String springSecurityContextKey = SPRING_SECURITY_CONTEXT_KEY; public CustomAuthenticationSuccessHandler(String redirectUrl) { this.redirectUrl = redirectUrl; } @Override public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException { // 获取session // HttpSession session = request.getSession(); // 从authentication中获取principal信息 // Object principal = authentication.getPrincipal(); // 将principal信息存入session // session.setAttribute(this.springSecurityContextKey, principal); // String requestURI = request.getRequestURI(); Map parameterMap = request.getParameterMap(); StringBuilder builder = new StringBuilder(); if (parameterMap.size()>0){ builder.append("?"); } String client_id = request.getHeader("client_id"); String response_type = request.getHeader("response_type"); String redirect_uri = request.getHeader("redirect_uri"); // 拼接 if (!Strings.isBlank(client_id)){ builder.append("client_id=").append(client_id) .append("&") .append("response_type=").append(response_type) .append("&") .append("redirect_uri=").append(redirect_uri); } // 跳转 response.sendRedirect(redirectUrl + builder.toString()); } }