现在已经和它斗争了一段时间,不知道它为什么不起作用.
要点是将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
我已经用尽了我的搜索,也许有人可以看到我失踪的东西.
干杯
解决方法
原文地址:https://www.jb51.cc/ruby/268203.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。