修改设计SAML属性

时间:2015-08-04 03:49:24

标签: ruby-on-rails devise saml

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

我已经完成了SAML的工作,但我正在努力解决一件事。

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

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

有谁知道这样做的方法?如有必要,我可以发布任何其他代码,我只是不确定还需要什么。感谢。

1 个答案:

答案 0 :(得分:1)

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

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过滤器给出的格式不正确的角色,以正确设置"真实"角色领域。