Ruby on rails 使用LDAP的Rails身份验证

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进行身份验证),是否需要生成用户模型?用户模型还用于

我正在学习Rails(没有web开发和MVC方面的经验),为了提高我的技能,我想实现一个在LDAP中进行身份验证的应用程序。我一直在阅读Ryan Bigg的RAILS 4 IN ACTION和Michael Hartl的RUBY ON RAILS教程。现在在这些教程中,开发的应用程序需要一个身份验证系统。他们从头开始构建认证系统。由于用户名/密码保存在数据库中,因此它们生成一个用户模型。我的问题是,如果我在LDAP中保存用户数据(并通过LDAP进行身份验证),是否需要生成用户模型?用户模型还用于保存cookies(以记住用户会话)。这是否意味着我应该生成用户模型,但只保存会话数据?任何指针都可以。当然,您不需要创建继承自
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