CAS logout的时候,默认是会重定向到cas server端的logout页面。
现在的需求是重定向到登录页面。
在应用中, 我还遇到直接ogout(只做清空session, cookie), 而不去重定向到cas 的logout页面,这种情况下:
如果不关闭浏览器, 直接再次输入Application的URL, 会绕过CAS认证,照常登入。
吃问题困扰了几天,看了一下CASserver端的代码,恍然大悟:
LogoutController有一个开关变量:
- private boolean followServiceRedirects;
并有一段逻辑:
- if (this.followServiceRedirects && service != null) {
- return new ModelAndView(new RedirectView(service));
- }
service是个啥:
- final String service = request.getParameter("service");
如果在logout的url后面加上你要重定向的那个页面, 就可以自定义登出页面了:
所以,我的方案就出来了:
在cas-servlet.xml中,设置logoutController的followServiceRedirects=true
- <bean id="logoutController" class="org.jasig.cas.web.LogoutController"
- p:centralAuthenticationService-ref="centralAuthenticationService"
- p:logoutView="casLogoutView"
- p:warnCookieGenerator-ref="warnCookieGenerator"
- p:ticketGrantingTicketCookieGenerator-ref="ticketGrantingTicketCookieGenerator"
- p:followServiceRedirects="true"/>
application在登出的时候,除了清空session和cookie外, 重定向的url加上:
- var apphostname = window.location.hostname
- var appport = window.location.port;
-
- var callbackurl='?service=http%3A%2F%2F'+apphostname +'%3A'+appport + '%2Fapplication'
- window.location = logoutUrl+ callbackurl;
分享到:
相关推荐
phpCAS源码以及调用示例(redis管理session,解决无法logout的问题)
-- CAS logout--> <bean id="logout" class="org.apache.shiro.web.filter.authc.LogoutFilter"> ${cas.logout.url}"/> </bean> <!-- CAS认证过滤器 --> ...
<param-value>http://192.168.156.120:8080/cas/logout</param-value><!--server cas 地址--> <!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置 --> org.jasig.cas.client.session....
其中shiro.loginUrl 跟 shiro.logoutUrl的前面是cas验证的地址,后面的是我们应用系统的地址,这样配置的方式是为了在访问我们的应用系统的时候,先到cas进行验证,如果验证成功了,cas将重定向到shiro.successUrl ...
Administrator auto logOUT
cas-overlay-template-5.3 cas 5.3版本服务器模版
bash.bash_logout888
Laravel开发-logout-plugin 指定时间后自动注销已验证的后端用户。
flex中的login,logout示例.本文是从网上搜集来的资源,现转载。
cas多服务器集群及客户端程序 服务器运行run.bat即启动 客户端通过 Client.login() Client.logout() Client.touch() Client.changePassword() 调用 通过telnet可以控制服务器重启(输入R)和停止(输入S)
mac logout 代码,系统注销后,清理2桌面上的文件
logout :使用Koa服务器取消对客户端的身份验证,然后将其重定向到CAS注销页面。 安装 npm install koa2-cas 设置 import Cas from 'koa2-cas' const cas = new Cas ( { cas_url : 'https://my-cas-host.com/cas' ...
logout神秘
logout :使用Express服务器取消对客户端的身份验证,然后将其重定向到CAS注销页面。 安装 npm install cas-authentication 设置 var CASAuthentication = require ( 'cas-authentication' ) ; var cas = new ...
这里目前有效: 基本工作流程(/login、/validate、/serviceValidate) 信任身份验证(默认禁用) /logout(暂时没有 SLO) 准确的服务主机的简单白名单(通配符可能有一天会出现) REST API CAS代理简单实现中间件...
logout.jsp
logout.php
卡索该项目将是 Casable 项目,使 NodeJS express 应用程序能够使用 CAS 进行身份验证。 用途: var cas = require('casable');...只需定义这样的URL即可注销功能app.get('/logout', auth, function(request, res
用SpringSecurity原生的logout实现功能,具体讲解可参考: https://blog.csdn.net/u012329294/article/details/105382239