我正在学习 Rails(没有 Web 开发和 MVC 经验),为了提高我的技能,想要实现一个在 LDAP 中完成身份验证的应用程序。我一直在阅读 Ryan Bigg 的《RAILS 4 IN ACTION》和 Michael Hartl 的《RUBY ON RAILS TUTORIAL》。现在在这些教程中,开发的应用程序需要一个身份验证系统。他们从头开始构建身份验证系统。由于用户名/密码保存在数据库中,因此它们会生成用户模型。我的问题是,如果我将用户数据保存在 LDAP 中(并通过 LDAP 进行身份验证),我是否需要生成用户模型?用户模型还用于保存 cookie(以记住用户 session )。这是否意味着我应该生成用户模型但只保存 session 数据?任何指针将不胜感激。
最佳答案
您当然不需要创建一个继承自 ActiveRecord::Base
类的模型,但是使用某个类来保存用户信息是合适的 - 即使它只是在运行期间时间。或者您真的只想进行身份验证然后忘记用户?
如果您有兴趣使用 LDAP 和事实上的标准 Rails gem 进行身份验证 - devise ,请查看此 Wiki 页面 https://github.com/plataformatec/devise/wiki/How-To:-Authenticate-via-LDAP .
您所要做的就是使用自定义身份验证策略。
require 'net/ldap'
require 'devise/strategies/authenticatable'
module Devise
module Strategies
class LdapAuthenticatable < Authenticatable
def authenticate!
if params[:user]
ldap = Net::LDAP.new
ldap.host = [YOUR LDAP HOSTNAME]
ldap.port = [YOUR LDAP HOSTNAME PORT]
ldap.auth email, password
if ldap.bind
user = User.find_or_create_by(email: email) #optional lookup
success!(user) # you do have to return some object
else
fail(:invalid_login)
end
end
end
def email
params[:user][:email]
end
def password
params[:user][:password]
end
end
end
end
Warden::Strategies.add(:ldap_authenticatable, Devise::Strategies::LdapAuthenticatable)
如果你想避免使用devise,请使用warden-ldap https://github.com/renewablefunding/warden-ldap .
关于ruby-on-rails - 使用 LDAP 进行 Rails 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31406867/