validation - 如何让 Keycloak 验证用户同意?
问题描述
在我们的 NodeJS/React 应用程序中,我们使用 Keycloak 进行授权。我们需要在注册时实施同意。我们将所有这些布局调整到我们的设计系统https://github.com/keycloak/keycloak/tree/3.4.3.Final/themes/src/main/resources/theme/base/login。
注册表有布局。我们将复选框添加<input type=checkbox name="user.attributes.registration_consent1" />
到适当的布局中。
如果用户注册并选中复选框,我可以确认相关信息存储在 Keycloak>Users>SomeUser>Edit>Attributes
但是用户仍然可以在不选中复选框的情况下注册。如果他不检查同意,如何防止用户注册?我不想使用 JavaScript。
由于糟糕的用户体验和转换速度减慢,条款和条件方法是不可接受的。
解决方案
将表单字段添加到模板后,您需要验证用户输入。验证还意味着检查用户是否填写了必填字段,并根据该字段的值覆盖/添加数据。
例如,用户检查了“条款和条件”,但您需要存储那些被接受的时间戳以及可能被接受的“条款和条件”的版本。
依赖客户端验证(HTML 或 JavaScript)并不是最好的解决方案。
在这种特殊情况下,您需要告诉 Keycloak 如何验证该新字段的值。
这可以通过使用 Keycloak 的服务提供者接口 (SPI) 来完成。在这种情况下,身份验证 SPI 负责处理注册表单数据。
这是文档中特定部分的链接: https ://www.keycloak.org/docs/latest/server_development/#modifying-extending-the-registration-form
推荐阅读
- python - TypeError:字符串索引必须是整数,但它是整数
- angularjs - 如何在最后一次调用函数后以 5 秒的时间间隔执行函数?
- reactjs - 无法忍受的类型错误:this.state.products.map 不是函数
- python - 为什么要在工厂函数上使用 pytest 工厂作为夹具?
- python - 如何将 keras tensorflow 转换为 keras mxnet
- java - 在运行时仅使用注释填充 spring bean 属性
- windows - 批处理变量设置为 ■1 而不是预期输出
- php - php array_key_exists 永远不会为真
- django - Django验证器纠正而不是拒绝用户输入
- angular - Angular 6 中的未知“谷歌未定义”谷歌地图集成