5.3 版本是最新的支持jdk8 的版本,并且项目架构基于maven ,商业项目中jdk8 仍是主流,在考虑商业收益的情况下,如果客户不要求,不会升级jdk, 基于Maven的项目比gradle 简单,易于掌握。
所以在选择cas版本的时候综合考虑历史情况,和技术现状,选择了5.3.16版本。
目前主流的系统都是前后端分离,前端可以自由制作页面,不依赖cas的代码,个性化交互。
cas本身设计思想是前后端不分离,依靠cookie 传递登录状态,登录信息。
cas自身支持前后端分离,但是返回的数据格式不能自定义,需要前端判断兼容,不够优雅,并且一些账户不存在,密码错误,或者权限信息无法传递给前端,所以需要自己改造cas,自己实现前后端分离。
原生的Credential 传递信息只包含用户名,密码,如果需要其他信息则需要自己实现
增加验证码生成逻辑,增强登录的安全性
流程参考验证码生成验证逻辑
自定义逻辑接入Redis,实现分布式验证码验证
记录判定密码错误次数
返回结果用Result 封装,包含状态码,异常信息,便于前后端对接
配置示例
<!--Kaptcha是一个基于SimpleCaptcha的验证码开源项目-->
<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-core-logout-api</artifactId>
<version>5.3.16</version>
<scope>compile</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apereo.cas/cas-server-core-util -->
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-core-util</artifactId>
<version>5.3.16</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-redis-ticket-registry</artifactId>
<version>${cas.version}</version>
</dependency>
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-actions</artifactId>
<version>${cas.version}</version>
</dependency>
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-core</artifactId>
<version>${cas.version}</version>
</dependency>
验证码验证使用Redis,用户密码校验链接数据源,经过NGINX 之后实现分布式统一登录,可以实现滚动发布,登录不停服。
关注并私信联系,详细文档包含登录流程分析,开发过程中遇到问题,文档不含源码,需要自己理解开发。
知识无价,程序有价,本方案历时一个月形成,期间遇到多个坑。如果从0开始,大概5到15个工作日能完成。
如有源码需求,私信咨询。