SpringBoot中关于一些项目的配置
CAS登录验证
cas配置登录拦截回调
package com.microvideo.ewcp.configration;
import org.jasig.cas.client.authentication.AuthenticationFilter;
import org.jasig.cas.client.session.SingleSignOutFilter;
import org.jasig.cas.client.session.SingleSignOutHttpSessionListener;
import org.jasig.cas.client.util.HttpServletRequestWrapperFilter;
import org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter;
import org.jasig.cas.client.validation.Cas20ProxyTicketValidator;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import com.microvideo.ewcp.main.filter.LoginFilter;
@Configuration
public class CasConfig {
private static String serviceurlone;
@Value("${serviceurlone}")
public void setServiceurlone(String serviceurlone) {
CasConfig.serviceurlone = serviceurlone;
}
@Bean
public ServletListenerRegistrationBean servletListenerRegistrationBean(){
ServletListenerRegistrationBean listenerRegistrationBean = new ServletListenerRegistrationBean();
listenerRegistrationBean.setListener(new SingleSignOutHttpSessionListener());
listenerRegistrationBean.setOrder(Ordered.HIGHEST_PRECEDENCE);
return listenerRegistrationBean;
}
@Bean
public FilterRegistrationBean singleSignOutFilter(){
SingleSignOutFilter signOut = new SingleSignOutFilter();
signOut.setIgnoreInitConfiguration(true);
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.setFilter(signOut);
registrationBean.setOrder(2);
registrationBean.addInitParameter("serviceurlone", serviceurlone);
return registrationBean;
}
@Bean
public FilterRegistrationBean AuthenticationFilter(){
AuthenticationFilter auth = new AuthenticationFilter();
auth.setIgnoreInitConfiguration(true);
auth.setCasServerLoginUrl(LoginFilter.CASURL);
auth.setServerName(serviceurlone);
auth.setCustomUnit("TZJJ");
auth.setNotVerifyUrl("/policeservice/,/carservice/,/login/,/boundservice/,/pcFind/");
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.setFilter(auth);
registrationBean.addUrlPatterns("/*");
registrationBean.setName("CAS Filter");
registrationBean.setOrder(3);
registrationBean.addInitParameter("serviceurlone", serviceurlone);
return registrationBean;
}
@Bean
public FilterRegistrationBean cas20ProxyReceivingTicketValidationFilter(){
Cas20ProxyReceivingTicketValidationFilter validation = new Cas20ProxyReceivingTicketValidationFilter();
validation.setIgnoreInitConfiguration(true);
validation.setMillisBetweenCleanUps(60000);
final Cas20ProxyTicketValidator v = new Cas20ProxyTicketValidator(LoginFilter.CASPREURL);
validation.setTicketValidator(v);
validation.setServerName(serviceurlone);
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.setFilter(validation);
registrationBean.addUrlPatterns("/*");
registrationBean.setName("CAS Validation Filter");
registrationBean.setOrder(4);
registrationBean.addInitParameter("serviceurlone", serviceurlone);
return registrationBean;
}
@Bean
public FilterRegistrationBean httpServletRequestWrapperFilter(){
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.setFilter(new HttpServletRequestWrapperFilter());
registrationBean.addUrlPatterns("/*");
registrationBean.setName("CAS HttpServletRequest Wrapper Filter");
registrationBean.setOrder(5);
registrationBean.addInitParameter("serviceurlone", serviceurlone);
return registrationBean;
}
@Bean
public FilterRegistrationBean localUserInfoFilter(){
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.setFilter(new LoginFilter());
registrationBean.addUrlPatterns("/*");
registrationBean.setName("LoginFilter");
registrationBean.setOrder(6);
registrationBean.addInitParameter("serviceurlone", serviceurlone);
return registrationBean;
}
}
接口请求拦截
package com.microvideo.ewcp.main.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.microvideo.ewcp.util.QsCtrlUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
public class LoginFilter implements Filter{
public static final String CASPREURL="https://127.0.0.1/MicrovideoCAS";
public static final String CASURL="https://127.0.0.1/MicrovideoCAS/login";
public static String HOSTURL="https://127.0.0.1";
public static final String SERVICE="https://127.0.0.1/TZTP_EWCP/index/index";
private final Logger log = LoggerFactory.getLogger(this.getClass());
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain)
throws IOException, ServletException {
log.info("LoginFilter --->doFilter");
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
String userId="";
try {
userId= QsCtrlUtil.getUid(request);
} catch (Exception e) {
response.sendRedirect(CASURL+"?service="+ HOSTURL+"/TZTP_EWCP/index/index");
}
if (StringUtils.isEmpty(userId)) {
response.sendRedirect(CASURL+"?service="+ HOSTURL+"/TZTP_EWCP/index/index");
}else {
chain.doFilter(request, response);
}
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
HOSTURL=filterConfig.getInitParameter("serviceurlone");
log.info("LoginFilter --->init");
}
@Override
public void destroy() {
log.info("LoginFilter --->destroy");
}
}
调用登录的IndexController
package com.microvideo.ewcp.index.controller;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSONObject;
import com.microvideo.ewcp.common.controller.UserInfoController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping("/")
public class IndexController {
@Resource
private UserInfoController userInfoController;
@RequestMapping("/")
public ModelAndView index(HttpServletRequest request,HttpServletResponse response){
ModelAndView mv = new ModelAndView();
try {
JSONObject configParam = userInfoController.getConfigParam(response, request.getUserPrincipal().toString());
JSONObject result = configParam.getJSONObject("result");
mv.addObject("userInfo",result);
mv.setViewName("/index");
} catch (Exception e) {
mv.setViewName("/index");
return mv;
}
System.out.println(mv);
return mv;
}
}