Authlogic OpenID集成

cra*_*aig 9 openid ruby-on-rails authlogic

我在使用Authlogic进行OpenId身份验证时遇到了困难.似乎问题出现在open_id_authentication插件的更改中.从我到目前为止所读到的,人们需要从使用宝石切换到使用插件.

以下是我为使Authlogic-OpenID集成工作所做的工作:

  1. 删除了相关的宝石:
    • authlogic
    • authlogic-OID
    • 机架的OpenID
    • ruby-openid*
    • 安装,配置并启动了authlogic示例应用程序(http://github.com/binarylogic/authlogic_example)--works如预期.这需要:
    • 安装authlogic(2.1.3)gem($ sudo gem install authlogic)
    • 将依赖项(config.gem"authlogic")添加到environment.rb文件中.
    • 添加迁移以向User模型添加open-id支持; 跑迁; 列按预期添加
    • 对UsersController和UserSessionsController进行了更改,以使用块来保存每个.
    • 对新的用户会话视图进行了更改以支持open id(f.text_field:openid_identifier)
    • 安装open_id_authentication插件($ script/plugin install git://github.com/rails/open_id_authentication.git)
    • 安装了authlogic-oid插件($ script/plugin install git://github.com/binarylogic/authlogic_openid.git)
    • 安装了插件($ script/plugin install git://github.com/glebm/ruby-openid.git)
    • 重启mongrel(CTRL-C; $ script/server)

Mogrel未能启动,返回以下错误:

/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- rack/openid (MissingSourceFile)
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require'
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require'
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:521:in `new_constants_in'
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require'
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/plugins/open_id_authentication/lib/open_id_authentication.rb:3
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require'
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require'
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:521:in `new_constants_in'
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require'
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/plugins/open_id_authentication/init.rb:5:in `evaluate_init_rb'
    from ./script/../config/../vendor/rails/railties/lib/rails/plugin.rb:146:in `evaluate_init_rb'
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb:11:in `silence_warnings'
    from ./script/../config/../vendor/rails/railties/lib/rails/plugin.rb:142:in `evaluate_init_rb'
    from ./script/../config/../vendor/rails/railties/lib/rails/plugin.rb:48:in `load'
    from ./script/../config/../vendor/rails/railties/lib/rails/plugin/loader.rb:38:in `load_plugins'
    from ./script/../config/../vendor/rails/railties/lib/rails/plugin/loader.rb:37:in `each'
    from ./script/../config/../vendor/rails/railties/lib/rails/plugin/loader.rb:37:in `load_plugins'
    from ./script/../config/../vendor/rails/railties/lib/initializer.rb:348:in `load_plugins'
    from ./script/../config/../vendor/rails/railties/lib/initializer.rb:163:in `process'
    from ./script/../config/../vendor/rails/railties/lib/initializer.rb:113:in `send'
    from ./script/../config/../vendor/rails/railties/lib/initializer.rb:113:in `run'
    from /Users/craibuc/NetBeansProjects/authlogic_example/config/environment.rb:13
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require'
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require'
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:521:in `new_constants_in'
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require'
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/railties/lib/commands/server.rb:84
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require'
    from script/server:3
Run Code Online (Sandbox Code Playgroud)

我怀疑这与rack-openid宝石有关,但由于它依赖于ruby-openid宝石,所以当去掉ruby-openid宝石时它被移除了.也许这可以作为插件安装.

非常感谢任何有关此事的帮助 - 我即将放弃OpenId集成.

*ruby​​-openid(2.1.2)安装在/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8.我不确定这是否会影响任何事情.在任何情况下,我不知道如何卸载它或我应该.

**编辑**

似乎/Library/Ruby/Gems/1.8/gems目录中有许多宝石可能导致问题:

  • authlogic-oid(1.0.4)
  • rack-openid(1.0.3)
  • ruby-openid(2.1.7)

问题: - 为什么gem list命令没有列出这些宝石? - 为什么gem uninstall命令没有删除这些宝石?

nfm*_*nfm 0

不确定 OSX 上的工作原理,但在 Linux 中,如果我作为普通用户安装 gems,它们会被放入我的主目录中,如果我使用它们安装,sudo它们会进入系统目录。

我也遇到过 gem 的权限问题,并且必须GEM_PATH在 shell 中显式设置 a 以使 ruby​​ 从特定位置加载 gem。

  • 如果你跑步,那些旧宝石会出现吗sudo gem list
  • 您的主目录和 中是否都安装了 gems /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8

编辑

好吧,我会启动一个会话,看看当你明确地使用 gemirb时会发生什么。require

$ irb
> require 'authlogic'
> require 'authlogic-oid'
...
Run Code Online (Sandbox Code Playgroud)

编辑:

如果authlogic-oidgem 已安装,并且在运行时出现sudo gem list,请尝试以超级用户身份启动irb。如果您可以 require authlogic-oid,则存在权限问题:部分或全部 gem 文件是只读 root。

如果这不起作用,您可能遇到加载路径问题 - ruby​​ 不知道在哪里寻找已安装的 gem。在这种情况下,您的authlogicgem 可能安装在与您的authlogic-oidgem 不同的位置。