- 本节目标:
- Cas 客户端 获取 Cas 服务器端 登录用户的信息
- 默认方式:在 Cas 客户端可以获取 服务器端的 登录 用户名
- 在UserController中 登录并 获取用户名方式
- String name = request.getRemoteUser();
- 部分代码如下:
- 在UserController中 登录并 获取用户名方式
-
- 可以在 客户端1 登录能获取到用户名,然后在客户端2,也可以直接获取到登录用户的用名,客户端2不需要再次登录
- 问题来了:如果想从服务端获取登录的所有信息如何获取?
- 例如:获取 id、name、password、role 等等,而不是只获取用户名称呢?
- 解决方式:获取Cas服务器端,返回 的所有用户信息
- 添加返回策略,主要在:cas server端的项目中的:cas/WEB-INF/classes/services下的:两个文件都需要添加返回策略:Apereo-10000002.json、HTTPSandIMAPS-10000001.json 添加的内容为:
"attributeReleasePolicy" : {
"@class" : "org.apereo.cas.services.ReturnAllAttributeReleasePolicy"
}
代码如下:
Apereo-10000002.json 文件:
HTTPSandIMAPS-10000001.json 文件:
- cas server 服务端 application.properties 增加的配置
#cas服务默认给cas客户端返回的字段信息(例如:返回 id、username 等)
cas.authn.jdbc.query[0].principalAttributeList=id,username,password
- 在cas 客户端的项目中获取返回信息的方式,也就是在相对应的springboot中的获取方式:(对应服务器端返回的字段)(注意:此代码没有进行类型判断,自己做时可以先判断类型再进行类型转换)
- 启动cas服务器端、客户端1、客户端2 进行测试,如果在客户端1 与 客户端2 的控制台上能打印出相对应的信息,即可! 如果显示出来,则 恭喜您大功告成!