包含原理配置实现及简易demo CAS4.1单点登录实现( 三 )


单点登录简易demo效果至此实现成功 。为形成完整的登录登出流程 , 后续还需要实现cas单点登出 。
注:上图所显示的错误Non-  , 是由于没有使用HTTPS协议的关系 , 而默认的登陆界面有对此进行验证的代码 , 而在实际项目中的登陆界面一般需要自己写 , 通过修改\cas\WEB-INF\view\jsp\\ui下的.jsp即可 。将下图所示代码删掉即可去除错误警告 。
实现CAS 单点登出过程
实现单点登出 , 需要在前文代码及配置的基础上进行 。
首先需要添加服务端配置 。
CAS服务端需进行相应的更改 , 在cas.中将下述配置改为true(若没有下述条目配置 , 则直接复制粘贴入文件中) , 添加配置后方可实现登出后的重定向 , 重定向地址为测试接口层中编写的地址 , 当调用登出后 , cas服务端发现该客户端不在登录状态 , 就会再次跳转到登录页 , 成功登录之后 , 便会再次跳转到目标接口路径 。
#CASto theon /
cas..ts=true
如果不添加此配置 , 就无法实现登出后的跳转 , 效果图如下(仅显示登出成功,而不会跳转到登录页)
其次是要注意测试接口层中的注解使用 。注意不要使用@注解本类 , 而是使用@注解 , 否则会导致重定向地址仅仅渲染在页面上 , 而不会实现页面跳转 。
原因分析
@注解相当于@ + @合在一起的作用
重定向失效即是@注解引起的 。@是作用在方法上的 , @ 表示该方法的返回结果直接写入 HTTPbody 中 , 一般在异步获取数据时使用【也就是AJAX】 , 在使用 @后 , 返回值通常解析为跳转路径 , 但是加上 @ 后返回结果不会被解析为跳转路径 , 而是直接写入 HTTPbody 中 。比如异步获取 json 数据 , 加上 @ 后 , 会直接返回 json 数据 。@ 将 HTTP 请求正文插入方法中 , 使用适合的将请求体写入某个对象 。
不会被解析成跳转路径 , 那么":” 重定向也就失效了 。
因此解决方法就是把@改成@注解 。
解决上述两点问题之后 , 重新启动服务端1、客户端2、客户端3 。
实现单点登录操作后 , 任选其中一方 , 访问其接口:
访问成功后 , 客户端2页面成功跳转至登录界面 , 回到客户端3 , 刷新页面 , 由于单点登出的效果 , 客户端3也处于离线状态 , 单点登出效果实现成功!

包含原理配置实现及简易demo  CAS4.1单点登录实现

文章插图
实际cas单点登录的应用场景 , 不可能只使用一个测试账号登录 , 因此需要实现cas与数据库相结合 , 实现自定义账号的单点登录登出 , 方有实际使用意义 。
结合mysql数据库 , 实现CAS单点登出的客户及服务的交互过程
主要修改部分为 CAS 的配置部分 , 通过在服务端配置数据源及相关验证 , 实现自定义用户及密码的登录替换 , 具体步骤及实施方式如下:
①新增cas登录的相关库表 , 具体库表语句如下:
# 创建测试数据库
CREATE DATABASE cas;USE cas;# 创建测试表CREATE TABLE `cas_t_user` (`id` int(11) NOT NULL AUTO_INCREMENT,`user_name` varchar(50) DEFAULT NULL,`password` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;# 插入两条测试用户数据INSERT INTO `cas_t_user` VALUES (1,'admin','96e79218965eb72c92a549dd5a330112');INSERT INTO `cas_t_user` VALUES (2,'user','96e79218965eb72c92a549dd5a330112');