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<String, String[]> 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());
|
}
|
}
|