我对你说的二楼的CAS集成能通过表示怀疑,我给你分析一下二楼的CAS集成:
首先看他对过滤器配置
错误1:
<filter> <filter-name>NTLoginFilter</filter-name> <filter-class>com.justep.filter.NTLoginFilter</filter-class> <!-- 以下参数表示url映射, 即如果访问的url是param-name, 将会重定向到param-value指向的页面 --> <init-param> <param-name>/UI/portal/login.w</param-name> <param-value>/portal/index.w</param-value> </init-param> <init-param> <param-name>/UI/portal2/process/portal/login.w</param-name> <param-value>/UI/portal2/process/portal/index.w</param-value> </init-param> <init-param> <param-name>/UI2/portal/pc/index.w</param-name> <param-value>/UI2/portal/pc/index.w</param-value> </init-param> <init-param> <param-name>/UI2/portal/mobile/index.w</param-name> <param-value>/UI2/portal/mobile/index.w</param-value> </init-param> </filter> <filter-mapping> <filter-name>NTLoginFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
对过滤的地址的输入与输出是一样的,查看二楼具体过滤器代码,代码如下:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest)request; HttpServletResponse res = (HttpServletResponse)response; HttpSession session = req.getSession(); if (session != null) { String username = (String)session.getAttribute("edu.yale.its.tp.cas.client.filter.user"); if (SystemUtils.isNotEmptyString(username)) { String bsessionid = getBSessionID(req, username); String url = NetUtils.getRequestPath(req); if ((this.urlMapping.containsKey(url)) && (!("true".equals(req.getParameter("_login")))) && (SystemUtils.isEmptyString(req.getParameter("$pageType")))) { String targetUrl = req.getContextPath() + ((String)this.urlMapping.get(url)); if (targetUrl.contains("?")) targetUrl = targetUrl + "&bsessionid=" + bsessionid + "&_login=true"; else { targetUrl = targetUrl + "?bsessionid=" + bsessionid + "&_login=true"; }
Cookie cookie = new Cookie("bsessionid", bsessionid);
cookie.setPath("/"); res.addCookie(cookie);
res.sendRedirect(targetUrl); return; } } }
chain.doFilter(req, res); }
过滤器只是对输入的地址加上了&bsessionid=" + bsessionid + "&_login=true", 然后再进行重定向,这样的话就会造成 死循环的!
错误二:
版本5.3.4 是不能通过传递 bsessionid 参数直接进入到门户的!
jishuang : 为了这个CAS集成,我已经发过好几个帖子了,我从5.3.2就问过你了,你说下一个版本会加上,现在已经是5.3.4了,希望你能帮我。 我对CAS研究的比较透,对CAS的代码也做了大量的修改,并且与5.2.7版本集成的也很好,现在就是在与5.3.4版本集成时,不知道如何才能通过过滤器重定向直接进入到门户! 昨天你告诉我的传递用户名与密码的方式,我试了试是行不通了,遇到了死循环,希望你能帮我解决这个问题! 帮我解决这个问题后,我会把我的与CAS集成的所有的资料发个帖子供大家参考,也会省去你很多时间的! 谢谢!!
|