在项目中,可能会遇到多个系统同时开发一个项目,这时候项目上线会遇到一个问题,大家都是二级域名,但是shiro的cookie也在二级域名下,其他系统无法获取,导致无法登录并且无法调用其他系统的接口及数据
我java的域名是
x.soho.cn
.net的域名是
Y.soho.cn
然后程序登录的主入口在java里使用的是shiro做权限认证
<!-- 会话Cookie模板 -->
<bean id="sessionIdCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
<constructor-arg value="JSESSIONID"/>
<!-- 如果设置为true,则客户端不会暴露给服务端脚本代码,有助于减少某些类型的跨站脚本攻击 -->
<property name="httpOnly" value="true"/>
<!--<property name="path" value="/" />-->
<!-- 配置存储Session Cookie的soho为 一级域名 -->
<property name="domain" value=".soho.cn"/>
<property name="maxAge" value="-1"/><!-- maxAge=-1表示浏览器关闭时失效此Cookie -->
</bean>
<!--手动指定cookie-->
<bean id="rememberMeCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
<constructor-arg value="rememberMe"/>
<property name="httpOnly" value="true"/>
<!-- JSESSIONID的path为/用于多个系统共享JSESSIONID -->
<property name="path" value="/" />
<!-- 配置存储rememberMe Cookie的soho为 一级域名 -->
<property name="domain" value=".soho.cn"/>
<property name="maxAge" value="604800"/><!-- 7天604800 -->
<property name="name" value="rememberMe" />
</bean>
只需要配置好
<property name="domain" value=".soho.cn"/>
即可使shiro的cookie种到一级域名下,所有的二级域名就可以获取