前段时间时间需要和其他项目做cas集成,于是乎在网上找了几篇教程看了一下,好了,很简单,学会了,开搞(自以为研究明白)。集成完事了,登录成功了,自以为这就过去了。然而,没过几天就出bug了,这下惨了,当初没有好好学出了问题都不知道咋解决。无奈,只得静下心来好好学习一番(当初太懒付出的代价)。原理其实很简单的,只要耐下心来好好研究终会搞懂的。
先看下图
那么是如何验证用户是否登录过呢?
如果session中包含“ const_cas_assertion ”属性,说明已经登录,跳过此过滤器执行配置的其他过滤器;
如果ticket参数不为空(可能是登陆后跳转回来的),跳过此过滤器,执行TicketValidationFilter 验证ticket;
如果前两个条件都不满足,重定向到cas服务端,返回登录页面进行登录操作。
Cookie中的CASTGC:向cookie中添加该值的目的是当下次访问
www.cas.server.com
时,浏览器将Cookie中的TGC携带到服务器,服务器根据这个TGC,查找与之对应的TGT。从而判断用户是否登录过了,是否需要展示登录页面。TGT与TGC的关系就像SESSION与Cookie中SESSIONID的关系。
TGT:Ticket Granted Ticket(俗称大令牌,或者说票根,他可以签发ST)。
TGC:Ticket Granted Cookie(cookie中的value),存在Cookie中,根据他可以找到TGT。
ST:Service Ticket (小令牌),是TGT生成的,默认是用一次就生效了。也就是上面的ticket值。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2021-02-01 CentOS 7 下 Docker 的离线安装方法
2021-02-01 docker 常用命令
2021-02-01 【docker】如何将服务器加入集群,成为子节点
2021-02-01 Docker管理面板系列——Portainer
2021-02-01 基于Docker的Consul服务发现集群搭建
2021-02-01 docker swarm和 k8s对比
2021-02-01 Docker 集群