因为ticket只有第一次从cas server跳转过来后地址栏携带ticket参数,后被 cas client 去掉了,所以加一个优先级高于CAS filter的 filter 来获取ticket.
<filter>
<filter-name>FetchCasTicketFilter</filter-name>
<filter-class>com.xindun.cims.filter.FetchCasTicketFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>FetchCasTicketFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
package com.xindun.cims.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;
public class FetchCasTicketFilter implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
String queryString = request.getQueryString();
if(queryString != null && queryString.contains("ticket")){
request.getSession().setAttribute("ticket_", queryString.substring(queryString.indexOf("=") + 1));
}
chain.doFilter(req, res);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
}
本文介绍了如何在CAS客户端中,通过添加一个优先级高于CAS过滤器的自定义过滤器,来捕获并处理初次从CAS服务器跳转时地址栏携带的ticket参数。
1万+

被折叠的 条评论
为什么被折叠?



