Ruby on rails 使用LDAP的Rails身份验证
我正在学习Rails(没有web开发和MVC方面的经验),为了提高我的技能,我想实现一个在LDAP中进行身份验证的应用程序。我一直在阅读Ryan Bigg的RAILS 4 IN ACTION和Michael Hartl的RUBY ON RAILS教程。现在在这些教程中,开发的应用程序需要一个身份验证系统。他们从头开始构建认证系统。由于用户名/密码保存在数据库中,因此它们生成一个用户模型。我的问题是,如果我在LDAP中保存用户数据(并通过LDAP进行身份验证),是否需要生成用户模型?用户模型还用于保存cookies(以记住用户会话)。这是否意味着我应该生成用户模型,但只保存会话数据?任何指针都可以。当然,您不需要创建继承自Ruby on rails 使用LDAP的Rails身份验证,ruby-on-rails,ruby-on-rails-4,authentication,ldap,Ruby On Rails,Ruby On Rails 4,Authentication,Ldap,我正在学习Rails(没有web开发和MVC方面的经验),为了提高我的技能,我想实现一个在LDAP中进行身份验证的应用程序。我一直在阅读Ryan Bigg的RAILS 4 IN ACTION和Michael Hartl的RUBY ON RAILS教程。现在在这些教程中,开发的应用程序需要一个身份验证系统。他们从头开始构建认证系统。由于用户名/密码保存在数据库中,因此它们生成一个用户模型。我的问题是,如果我在LDAP中保存用户数据(并通过LDAP进行身份验证),是否需要生成用户模型?用户模型还用于
ActiveRecord::Base
类的模型,但是有一些类来保存用户信息是合适的,即使只是在运行时。或者您真的只想进行身份验证,然后忘记用户
如果您有兴趣将LDAP与事实上的标准Rails gem一起用于身份验证-设计,请查看此Wiki页面
您所要做的就是使用自定义身份验证策略
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)
需要“net/ldap”
要求“设计/策略/可验证”
模块设计
模块策略
类LdapAuthenticatable
如果您想避免使用Desive,请转到warden ldap。我的位置与您相同。如果你能分享你为帮助一位兄弟所做的一切,那将是非常棒的P