cas登录传递的参数_CAS登录后回传除了ticket参数以外的其他自定义参数

本文介绍了在使用CAS、Shiro、Spring的单点登录系统中,为解决Ajax和iframe登录后跳转不友好的问题,如何重写CasFilter,确保登录成功后返回首页。同时,为了处理跨应用单点登录,通过添加自定义参数区分正常登录和ticket验证,详细阐述了重写SamlService、SimpleWebApplicationServiceImpl等类,并修改相关配置文件的方法。
摘要由CSDN通过智能技术生成

在一次项目的技术选型中,选择了easyui+cas+shiro+spring的组合,cas实现了单点登录,这使得在一个应用中嵌入另一个应用的页面来展示数据所涉及到的授权方面变得简单。

由于shiro在判断登录成功后会自动跳转到登录前访问的页面,这就使得在easyui这样的框架下ajax异步加载某个片段页面或iframe页面时正好登录超时,进行登录后就直接跳转到了那一个片段页面或iframe页面的url上了,导致了系统使用上不太友好。

于是决定在每次登录成功后都跳转回首页,这时需要重写shiro官方提供的CasFilter,在onLoginSuccess方法里改用

WebUtils.getAndClearSavedRequest(request);

清除掉其所记录的登录前访问的url信息。

在另外一个同样使用cas服务的应用中,需要iframe引用访问我当前应用的某个需要授权访问的页面,这时跨应用的单点登录也是一次登录的过程,由于我上面对当前应用的登录修改成了登录成功就直接跳转至首页,结果导致访问另外一个应用引用我当前应用的页面时,iframe里引用的页面直接跳转到首页了。

基于上面出现的问题,我决定在进行登录时,由cas返回ticket的同时,也要返回一个标记表明是通过登录页正常登录的还是通过ticket进行单点登录的,于是就有了我下面所研究出的CAS登录后回传除了ticket参数以外的其他自定义参数。

一、重写CAS的以下这几个类:

SamlServic类和SimpleWebApplicationServiceImpl类都是在CAS原来的类的基础上新增getResponse的重载方法:

CasArgumentExtractor类和SamlArgumentExtractor类的extractServiceInternal方法都是返回上面自己写的类的实例。

SendTicketGrantingTicketAction类主要是添加一个参数标识(之所以在这添加是根据CAS的单点登录访问流程决定的):

二、修改

配置文件里的

改成自己所写的类。

三、修改

配置文件里的

改成自己的类。

四、修改

配置文件里的

改成自己的类。

五、配置文件

里增加自己的条件判断

这是本人两三年前的干货了,当时把这步骤只是简单的记录到word文档里,如有不正确的地方,欢迎指正。

原文:http://www.cnblogs.com/liuxin-listenx/p/5643168.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值