field - Apereo CAS 6.0.x 将登录表单字段传递给解析的属性
问题描述
我需要向 CAS 6.0.X 登录屏幕(语言选择器)添加一个字段,该字段不用于对用户进行身份验证,但在登录后我需要它。如何将添加到表单的该字段传递给数据在“主体”对象中传递给客户端应用程序。
解决方案
最后,我已经达到了我所需要的。我们已经覆盖了 jdbc 支持模块以添加检查,并且我在其中放置了以下代码来帮助我检索请求的参数。
HttpServletRequest request = ((ServletRequestAttributes)
RequestContextHolder.currentRequestAttributes()).getRequest();
String[] fields = fieldsToPrincipal.split(",");
for(String field : fields2Principal)
{
dbFields.put( field.trim() , request.getParameter( field.trim() ) );
}
fieldsToPrincipal 它是一串表单字段名称,我想通过“主体”映射属性发送应用程序。
现在在属性文件中,我有 2 个属性,我在其中报告字段的名称。告诉您将为主体检索哪些字段的默认属性和我的自定义属性,其中我指示哪些字段将来自表单
cas.authn.jdbc.query[0].principalAttributeList:USERID, USERNAME, LANGUAGE_SELECTED cas.custom.properties.jdbc.loginfields.to.principal=LANGUAGE_SELECTED
推荐阅读
- java - 将列表中的元素移动到最后一个索引
- java - 休眠序列化失败
- c++ - 计算二叉搜索树 C++ 中的节点数
- string - AWK 比较两个字符串变量
- reactjs - 创建并发布可重用的 React Native UI 组件库
- python - Python Pandas - 如果使用 groupby 函数对两列中的数据进行汇总,则将一列中的数据除以另一列
- flutter - 用于 OnLongPressed 的颤振 GestureDetector
- webpack - 如何追踪捆绑节点模块的原因
- ios - 如何在 ViewController 中显示弹出窗口
- oracle-wallet - 向 Oracle 钱包添加证书