2

我正在使用omniauth-identity 并配置其“注册失败”。

我的文件:

配置/初始化程序/omniauth.rb

OmniAuth.config.logger = Rails.logger

Rails.application.config.middleware.use OmniAuth::Builder do
  #...
  provider :identity, on_failed_registration: lambda { |env|
    IdentitiesController.action(:new).call(env)
  }
end

配置/路由.rb

Wie::Application.routes.draw do
  root to: 'categories#index'

  ActiveAdmin.routes(self)
  devise_for :admin_users, ActiveAdmin::Devise.config

  match 'auth/:provider/callback', to: 'sessions#create'
  match 'auth/failure', to: 'sessions#failure'
  match 'signout', to: 'sessions#destroy', as: 'signout'
  resources :identities#, only: [:new]
  resources :categories, path: '', only: [:index] do
    resources :entries, path: '', only: [:index, :show]
  end
end

应用程序/控制器/identities_controller.rb

class IdentitiesController < ApplicationController
  def new
    ariane.add "New Account"

    @identity = env['omniauth.identity']
  end
end

当我注册失败(传递不正确的邮件)时,我得到以下信息:

在浏览器中:

路由错误

没有路线匹配{} 尝试运行 rake 路线以获取有关可用路线的更多信息。

在服务器日志中:

在 2012-07-16 17:35:48 +0300 (0.1ms) 开始 POST "/auth/identity/register" for 127.0.0.1 (0.1ms) begin transaction Identity Exists (0.2ms) SELECT 1 AS one FROM "identities" WHERE "identities "."email" = 'foo' LIMIT 1 (0.1ms) 回滚事务由 IdentitiesController#new 作为 HTML 参数处理:{"utf8"=>"✓", "authenticity_token"=>"HIDDEN :)>=", " name"=>"", "email"=>"foo", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "commit"=>"Register"}
渲染身份/布局/应用程序中的 new.html.erb(11.2 毫秒)在 44 毫秒内完成 500 内部服务器错误

ActionController::RoutingError (No route matches {}):
app/views/layouts/application.html.erb:35:in _app_views_layouts_application_html_erb___1224394470845933684_70120630781720' config/initializers/omniauth.rb:8:incall'
config/initializers/omniauth.rb:8:in `block (2 levels) in '

在救援/布局中渲染 /Users/ayia/.rvm/gems/ruby-1.9.3-p125@global/gems/actionpack-3.2.6/lib/action_dispatch/middleware/templates/rescues/routing_error.erb (0.6ms)

这可能是什么原因?我做错了什么?

更新 我不明白的是 - 为什么我得到Started POST "/auth/identity/register"?根据omniauth 配置,我应该得到与IdentitiesController.action(:new) 对应的视图,即/identities/new ...

4

1 回答 1

0

该问题无法在 1.1.0 版本的 omniauth-identiry 上重现。所以更新到最新版本解决了这个问题。

于 2012-10-20T10:50:03.163 回答