ruby-on-rails – 创建自定义设计策略
现在已经和它斗争了一段时间,不知道它为什么不起作用.
要点是将Devise与LDAP结合使用.除了自定义策略之外,我不需要做任何事情,所以除了自定义策略之外我不需要使用任何东西. 我基于https://github.com/plataformatec/devise/wiki/How-To:-Authenticate-via-LDAP创建了一个,据我所知,一切都应该工作,除非我尝试运行服务器(或rake路由),我得到一个NameError lib/devise/models.rb:88:in `const_get': uninitialized constant Devise::Models::LdapAuthenticatable (NameError) 我已将错误追溯到我的app / models / user.rb class User < ActiveRecord::Base devise :ldap_authenticatable,:rememberable,:trackable,:timeoutable end 如果我删除:ldap_authenticatable然后崩溃消失但我没有到用户#session的路由,并且无法访问登录提示. 我的支持文件: LIB / ldap_authenticatable.rb 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 = 'redacted' ldap.port = 389 ldap.auth login,password if ldap.bind user = User.where(login: login).first_or_create do |user| success!(user) else fail(:invalid_login) end end end def login params[:user][:login] end def password params[:user][:password] end end end end Warden::Strategies.add(:ldap_authenticatable,Devise::Strategies::LdapAuthenticatable) 最后,在config / initializers / devise.rb中 Devise.setup do |config| # ==> LDAP Configuration require 'ldap_authenticatable' config.warden do |manager| manager.default_strategies(:scope => :user).unshift :ldap_authenticatable end end 我已经用尽了我的搜索,也许有人可以看到我失踪的东西. 干杯 解决方法
您的lib / ldap_authenticatable.rb是在自动加载路径中还是明确要求?由于lib文件夹中的Rails 3代码不再默认自动加载.这是关于如何
solve it的一种方法
恕我直言设计是一个伟大的宝石.但是,为了编写自己的策略,您不仅要熟悉Devise,还要熟悉Warden源代码,并且需要在不同的地方编写很多样板代码,因此我开始研究如何使自定义变得更容易设计并提出这个宝石devise_custom_authenticatable.你可以检查它,它可能会以不同的方式解决你的问题.这个gem在生产代码库中用于相当繁忙的应用程序,所以它经过验证:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |