ruby-on-rails - 修改设计 SAML 属性

标签 ruby-on-rails devise saml

我正在为我的帐户系统使用 Rails 4 和 Devise 以及 Devise SAML Authenticatable。

我已经让 SAML 正常工作,但我正在尝试解决一件事。

我想在保存之前更改 SAML 属性之一(因为它的格式不正确)。本质上,帐户的 SAML 请求被赋予一个 role 属性,该属性是以下 Group_adminGroup_consumerGroup_supplier 之一。我的 Account 模型中有一个 role 字段,枚举如下:

enum role: [:admin, :consumer, :supplier]

显然我无法直接设置role,因为Group_admin != admin(等等)。有没有办法修改 Devise 保存字段之前给定的 SAML 属性?

我尝试过 before_save 过滤器,但无济于事。

before_save :fix_role!

private
def fix_role!
  self.role = self.role.split('_')[1]
end

有谁知道有什么方法可以做到这一点吗?如果需要,我可以发布任何其他代码,我只是不确定还需要什么。谢谢。

最佳答案

我能够执行以下操作来解决该问题:

attribute-map.yml

"role": "full_role"

account.rb

before_save :set_role!
attr_accessor :full_role

private
  def set_role!
    self.role = self.full_role.split('_')[1]
  end

本质上,我使用 attr_accessor 来存储从 SAML 响应中给出的格式不正确的角色,并使用 before_save 过滤器来正确设置“真实”角色字段。

关于ruby-on-rails - 修改设计 SAML 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31800355/

相关文章:

html - 覆盖当前浏览器页面的弹出消息

ruby-on-rails - Ruby:如何在 Ruby 中读取包含两个 header 的 CSV 文件?

ruby-on-rails - 将每个 JSON 对象保存到模型中

cookies - 什么是 SAML token 和 FedAuth cookie?

ruby-on-rails - 模型在 accepts_nested_attributes_for 上中断,没有关联错误

ruby-on-rails - 如何向设计 'sign up' 页面添加其他字段?

mysql - 更新了 rails 3 迁移,但结果在 take :db migrate 后不显示

ruby-on-rails - 如何让管理员用户销毁其他用户?设计康康康

saml - 为 API 网关权限转义 AWS IAM 策略变量

single-sign-on - 为什么在设置基于 SAML 的 SSO 时需要 IdP 证书指纹