修改设计 SAML 属性
Modify Devise SAML Attributes
我正在为我的帐户系统使用 Rails 4 和 Devise with Devise SAML Authenticatable。
我已经让 SAML 正常工作,但我正在努力解决一件事。
我想在保存之前更改其中一个 SAML 属性(因为它的格式不正确)。本质上,帐户的 SAML 请求被赋予一个 role
属性,它是以下 Group_admin
、Group_consumer
、Group_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
有谁知道这样做的方法吗?如果需要,我可以 post 任何其他代码,我只是不确定还需要什么。谢谢。
我能够执行以下操作来解决问题:
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
过滤器来正确设置 "real" 角色字段。
我正在为我的帐户系统使用 Rails 4 和 Devise with Devise SAML Authenticatable。
我已经让 SAML 正常工作,但我正在努力解决一件事。
我想在保存之前更改其中一个 SAML 属性(因为它的格式不正确)。本质上,帐户的 SAML 请求被赋予一个 role
属性,它是以下 Group_admin
、Group_consumer
、Group_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
有谁知道这样做的方法吗?如果需要,我可以 post 任何其他代码,我只是不确定还需要什么。谢谢。
我能够执行以下操作来解决问题:
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
过滤器来正确设置 "real" 角色字段。