查看shiro源码发现系统在启动时会加载loginUrl
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<property name="securityManager" ref="securityManager"/>
<property name="loginUrl" value="${loginUrl}" />
。。。。。
loginUrl是配置在properties中的
loginUrl=http://127.0.0.1:8880/uamssocloud/login?service=http://127.0.0.1:8881/kwtong/login
由于在shiro配置文件中有
/** = user
shiro的UserFilter会过滤请求判断是否有Session用户,若没有则重定向到loginUrl,去单点系统登录,而单点登录成功后会重定向回service参数制定的地址
这时LoginController登录成功后,会统一return "redirect:/main"
解决方案
继承UserFilter,重写redirectToLogin方法,将service参数改写,使之变成这样子
http://127.0.0.1:8880/uamssocloud/login?service=http://127.0.0.1:8881/kwtong/login?url=/kcinfo/kclist/081/201304
将shiro配置文件/** = user 改成/** = myUserFilter
再修改LoginController,当存在url参数时,重定向到url制定的地址
大功告成
没有评论:
发表评论