以编程方式访问 Rails 中的 Devise LDAP 配置
Programmatically access Devise LDAP config in Rails
我在 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 服务器未重新启动的情况下发生更改,则 Rails 实际使用的 "live" 值将与众不同。
如何获得这些 "live" 值?我在这上面找不到任何东西。
您可以使用此访问配置:
> 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"
我在 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 服务器未重新启动的情况下发生更改,则 Rails 实际使用的 "live" 值将与众不同。
如何获得这些 "live" 值?我在这上面找不到任何东西。
您可以使用此访问配置:
> 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"