CAS客户端退出登录

1. 直接访问 /cas/logout**(前端)**

最简单的方式是让前端浏览器重定向到 CAS 的登出 URL:

复制代码
window.location.href = "https://cas.example.org/cas/logout";

或通过超链接:

复制代码
<a href="https://cas.example.org/cas/logout">退出登录</a>
效果
  • CAS Server 会清除自身的会话(Session)。
  • 如果配置了 单点登出(SLO),CAS 会尝试通过回调或前端重定向通知所有已登录的客户端应用(需客户端支持)。

2. 带参数的登出(自定义回调)

CAS的 /cas/logout 支持以下参数:

  • service(可选):登出后重定向的 URL(需在 CAS 白名单中配置)。
  • url(可选):同 service(某些版本支持)。
示例
复制代码
window.location.href = "https://cas.example.org/cas/logout?service=https://your-app.com/logged-out";

或通过表单提交:

复制代码
<form action="https://cas.example.org/cas/logout" method="post">
  <input type="hidden" name="service" value="https://your-app.com/logged-out" />
  <button type="submit">退出登录</button>
</form>
注意
  • 客户端应用需在 CAS Server 的 服务管理(Service Management) 中配置允许的 service 回调地址。
  • 如果客户端需要清除本地会话,需在重定向到 service 的页面中处理(如删除 Cookie 或 Token)。

3. 后端调用 /cas/logout

CAS 的 /cas/logout 通常依赖浏览器重定向或回调通知客户端,直接通过后端 HTTP 请求调用无效(因为无浏览器上下文)。但可以通过以下方式间接实现:

方案
  1. 后端提供一个登出接口(如 /api/logout)。
  2. 接口内清除本地会话(如删除 Session/Token)。
  3. 返回重定向指令给前端,由前端跳转到 CAS 的 /cas/logout
示例(Spring Boot)
复制代码
@GetMapping("/logout")
public String logout(HttpServletRequest request, HttpServletResponse response) {
    // 1. 清除本地会话
    request.getSession().invalidate();
    
    // 2. 返回CAS登出URL(前端跳转)
    return "redirect:https://cas.example.org/cas/logout?service=https://your-app.com/logged-out";
}

总结调用流程

  1. 前端触发 :用户点击退出按钮 → 跳转到 https://cas.example.org/cas/logout?service=...
  2. CAS 处理:清除 CAS 会话 → 通知所有客户端(通过重定向或 Back-Channel)。
  3. 客户端处理 :在 service 回调页面或接口中清除本地会话。

实现全局同步登出

相关推荐
DIY源码阁9 小时前
JavaSwing学生成绩管理系统 - MySQL版
java·数据库·mysql·eclipse
basketball61610 小时前
C++ NULL 和 nullptr 区别 以及 nullptr 的核心实现
java·开发语言·c++
JAVA面经实录91711 小时前
MyBatis面试题库
java·mybatis
小江的记录本11 小时前
【JVM虚拟机】垃圾回收GC:垃圾回收算法:标记-清除、标记-复制、标记-整理、分代收集(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·算法·安全·面试
小江的记录本12 小时前
【JVM虚拟机】垃圾回收GC:垃圾收集器:G1:Region分区、Mixed GC、回收流程、适用场景(高频)(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·spring·spring cloud·面试
摇滚侠12 小时前
Java 零基础全套教程,反射机制,笔记 187-188
java·开发语言·笔记
超梦dasgg13 小时前
Java 生产环境第三方对接安全保障方案
java·开发语言·安全
日月云棠13 小时前
9 Double 与 Float —— IEEE 754 浮点数在 Java 中的实现
java·后端
Refrain_zc13 小时前
Android 二维码登录轮询机制:从扫码到登录的完整客户端实现
java
z落落13 小时前
C#参数区别
java·算法·c#