cas5.3.2单点登录

您所在的位置:网站首页 没有MSDS cas5.3.2单点登录

cas5.3.2单点登录

2023-11-17 00:21| 来源: 网络整理| 查看: 265

原文地址,转载请注明出处: https://blog.csdn.net/qq_34021712/article/details/81515317     ©王赛超 

既然有单点登录,肯定就要有登出,之前的整合都是只针对了登录,对登出并没有关注,今天我们就来讲讲登出。

关于单点登出原理,参考博客:

https://blog.csdn.net/u010588262/article/details/80201983 https://blog.csdn.net/gdsgdh308227363/article/details/80446168

参数说明

参考官网地址 https://apereo.github.io/cas/5.3.x/installation/Configuration-Properties.html#logout 官网共给出了以下几个属性值:

#配置单点登出 #配置允许登出后跳转到指定页面 cas.logout.followServiceRedirects=false #跳转到指定页面需要的参数名为 service cas.logout.redirectParameter=service #登出后需要跳转到的地址,如果配置该参数,service将无效。 cas.logout.redirectUrl=https://www.taobao.com #在退出时是否需要 确认退出提示 true弹出确认提示框 false直接退出 cas.logout.confirmLogout=true #是否移除子系统的票据 cas.logout.removeDescendantTickets=true #禁用单点登出,默认是false不禁止 #cas.slo.disabled=true #默认异步通知客户端,清除session #cas.slo.asynchronous=true

cas 默认登出后默认会跳转到CASServer的登出页,若想跳转到其它资源,可在/logout的URL后面加上service=jumpurl,例如:https://server.cas.com:8443/cas/logout?service=https://www.github.com 但默认servcie跳转不会生效,需要在 cas服务端的application.properties添加cas.logout.followServiceRedirects=true 这个参数也不一定非要叫 service, 可以通过cas.logout.redirectParameter 来修改它。 另外,默认退出的时候没有任何提示,直接就退出了,若想要有弹出提示,需要添加as.logout.confirmLogout=true 再另外,有一个cas.logout.redirectUrl的属性,可以配置默认登出之后跳转到的连接,若 配置该属性,service参数将无效。就算传了service参数,也是走的该页面,所以我们不需要配置此参数。 如果配置了cas.slo.disabled=true 将禁用单点登出。调用登出将无效。

配置过程 服务端配置 application.properties添加以下属性 #配置允许登出后跳转到指定页面 cas.logout.followServiceRedirects=true #跳转到指定页面需要的参数名为 service cas.logout.redirectParameter=service #在退出时是否需要 确认一下 true确认 false直接退出 cas.logout.confirmLogout=true #是否移除子系统的票据 cas.logout.removeDescendantTickets=true 客户端配置

可以直接在客户端的登出连接写成服务端的登出地址,不过我没有这样做。 我打算客户端写一个UserController,在各自的系统点击登出,先进入本服务的后台方法,在该方法中重定向到服务端的登出地址。

UserController.java package com.wangsaichao.cas.controller; import com.wangsaichao.cas.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpSession; /** * @author: wangsaichao * @date: 2018/8/1 * @description: 用户相关操作controller */ @Controller public class UserController { @Autowired private UserService userService; @RequestMapping("insert") public String insert(String username){ userService.insert(username); return "result"; } /** * 跳转到默认页面 * @param session * @return */ @RequestMapping("/logout1") public String loginOut(HttpSession session){ session.invalidate(); //这个是直接退出,走的是默认退出方式 return "redirect:https://server.cas.com:8443/cas/logout"; } /** * 跳转到指定页面 * @param session * @return */ @RequestMapping("/logout2") public String loginOut2(HttpSession session){ session.invalidate(); //退出登录后,跳转到退成成功的页面,不走默认页面 return "redirect:https://server.cas.com:8443/cas/logout?service=http://app1.cas.com:8081"; } }

注意:每个退出方法内都有一个session.invalidate();在点击退出的时候,销毁当前服务的session,如果没有配置这一行代码,你会发现,点击退出之后,还需要刷新一下连接才能重新跳转回登录页。

index.jsp

为了方便测试,在index.jsp添加两种退出方式的连接,完整代码如下:

CAS Example Java Web App 当前为客户端1 客户端1 客户端2 退出系统(方式1:跳转到默认页) 退出系统(方式2:跳转到指定页) A sample web application that exercises the CAS protocol features via the Java CAS Client. Authenticated User Id: 测试

1.先访问任意一个客户端登录 2.然后复制地址,打开另一个页面,让两个页面是不同的客户端 3.在任意一个客户端点击退出,刷新另一个服务的网页。 这里写图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3