我在Rails 4应用程序中使用Devise和LDAP身份验证。 ldap.yml
看起来像
development:
host: my.ldap.server
port: 636
attribute: sAMAccountName
base: OU=Accounts,DC=my,DC=ldap,DC=server
admin_user: CN=ServiceAccount,OU=LDAP,OU=Service Accounts,DC=my,DC=ldap,DC=server
admin_password: super_secret_password
ssl: true
production:
...
我希望能够以编程方式访问此功能,但我无法弄清楚如何执行此操作。我可以通过
直接从文件中读取来访问然而,这并非100%准确,因为如果文件中的值在没有重新启动Rails服务器的情况下发生了变化,那么" live" Rails实际使用的值会有所不同。
我怎样才能到达这些"生活"值?我无能为力。
答案 0 :(得分:1)
您可以使用以下方式访问配置:
> Devise::LDAP::Connection.new.ldap
=> #<Net::LDAP:0x0000010e9d2da8
@auth={:method=>:anonymous},
@base="OU=Accounts,DC=my,DC=ldap,DC=server",
@encryption={:method=>:simple_tls},
@force_no_page=false,
@host="my.ldap.server",
@open_connection=nil,
@port=636,
@verbose=false>
> Devise::LDAP::Connection.new.ldap.host
=> "my.ldap.server"
> Devise::LDAP::Connection.new.ldap.port
=> 636
...
>
就像我说的那样,我没有像你写的那样直接阅读文件。如果您更改ldap.yml
,则需要重新启动服务器以查看LDAP配置中的更改!如果您愿意,可以设置如下的初始值设定项:
# config/initializers/ldap.rb
LDAP_CONFIG = YAML.load(ERB.new(File.read("#{Rails.root}/config/ldap.yml")).result)[Rails.env].with_indifferent_access
然后在你的代码中:
LDAP_CONFIG[:admin_user] #=> "CN=ServiceAccount,OU=LDAP,OU=Service Accounts,DC=my,DC=ldap,DC=server"
LDAP_CONFIG[:admin_password] #=> "super_secret_password"
LDAP_CONFIG[:host] #=> "my.ldap.server"