package com.norteksoft.acs.web.filter;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
import org.jasig.cas.client.util.CommonUtils;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.security.AuthenticationException;
import org.springframework.security.ui.AuthenticationEntryPoint;
import org.springframework.security.ui.cas.CasProcessingFilterEntryPoint;
public class CasProcessingFilterEntryPointSub extends
CasProcessingFilterEntryPoint implements AuthenticationEntryPoint, InitializingBean{
private boolean encodeServiceUrlWithSessionId = true;
@Override
public void commence(ServletRequest servletRequest,
ServletResponse servletResponse,
AuthenticationException authenticationException)
throws IOException, ServletException {
final HttpServletResponse response = (HttpServletResponse) servletResponse;
String urlEncodedService = CommonUtils.constructServiceUrl(null, response, this.getServiceProperties().getService(), null, "ticket", this.encodeServiceUrlWithSessionId);
String type=servletRequest.getParameter("type");
if(type!=null){
if("rtxLogin".equals(type)){
urlEncodedService=urlEncodedService+";type="+type;
}else if("auto".equals(type)){
urlEncodedService=urlEncodedService+";type="+type+";"+servletRequest.getParameter("name")+"="+servletRequest.getParameter("pwd");
}
}
// 告诉 cas 访问的系统编号
//String uri = ((HttpServletRequest)servletRequest).getRequestURI();
//String sys = SystemUrls.getSysCodeFromUri(uri);
String redirectUrl = CommonUtils.constructRedirectUrl(this.getLoginUrl(), "service", urlEncodedService, this.getServiceProperties().isSendRenew(), false);
//redirectUrl = redirectUrl.replace("?service=", "?sys="+sys+"&service=");
response.sendRedirect(redirectUrl);
}
}