标签:
一、描述
当cas成功登录后如果访问同一域名下的资源是 被当作同一应用下资源不需要再次请求登录,但是如果二级域名不同会 被当作不同应用在访问 需要请求CAS
在请求时会把TGC传给CAS CAS验证TGC有效返回资源页面 本身是没有问题的 但是在返回时地址 会被重写 就不再是新生成的二级域名了
所以项目中无法区分二级域名了
二、思路
在登录成功后就自己写入session不用原来的域名
三、实现
AuthenticationFilter.java
方法 doFilter新增
final HttpServletRequest request = (HttpServletRequest) servletRequest; final HttpServletResponse response = (HttpServletResponse) servletResponse; Cookie c1 = null; Cookie[] co=request.getCookies(); if (co!=null){ for(Cookie c:co){ if(c.getName().equals("JSESSIONID")){ c1= c; break; } } } //验证 String serverName = request.getHeader("X-Real-HOST"); if (StringUtils.isEmpty(serverName)){ serverName=request.getServerName(); } Domain domain = new Domain(); domain.initDomain(serverName,request); if (c1==null ){ c1 = new javax.servlet.http.Cookie("JSESSIONID", request.getSession().getId()); c1.setDomain("."+request.getAttribute("domain")); c1.setPath("/"); response.addCookie(c1); }
标签:
原文地址:http://www.cnblogs.com/hedgehog105/p/5417879.html