2015-04-03 68 views
0

我想用設計來登錄,但在登錄失敗,從Rails的4具體來說一個406 Not Acceptable消息:軌道4設計:SessionsController:UnknownFormat:406錯誤

Started POST "/login.user" for 127.0.0.1 at 2015-04-03 14:37:21 -0600 
Processing by Devise::SessionsController#create as 
    Parameters: {"utf8"=>"✓", 
       "authenticity_token"=>"RLOQtv2L80h1VnMKynBuGsqsTEoggZzk3dWk6h8WdfQLOaOcoznTsPDortDQD5ql8qHm52l3+qnAxTf6U+dLxQ==", 
       "user"=>{"email"=>"[email protected]", 
         "password"=>"[FILTERED]", 
         "remember_me"=>"0"}, 
       "commit"=>"Log in"} 
    User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."email" = $1 ORDER BY "users"."id" ASC LIMIT 1 [["email", "[email protected]"]] 
    (0.2ms) BEGIN 
    Role Load (0.4ms) SELECT "roles".* FROM "roles" INNER JOIN "unities" ON "roles"."id" = "unities"."role_id" WHERE "unities"."user_id" = $1 AND (((roles.name = 'nil') AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL))) [["user_id", 4]] 
    SQL (0.5ms) UPDATE "users" SET "last_sign_in_at" = $1, "current_sign_in_at" = $2, "sign_in_count" = $3, "updated_at" = $4 WHERE "users"."id" = $5 [["last_sign_in_at", "2015-04-03 20:27:03.080761"], ["current_sign_in_at", "2015-04-03 20:37:21.763619"], ["sign_in_count", 7], ["updated_at", "2015-04-03 20:37:21.797872"], ["id", 4]] 
    (1.7ms) COMMIT 
Completed 406 Not Acceptable in 160ms (ActiveRecord: 6.0ms) 

我試圖適應會話我發現控制器here;這是相關部分:

class Users::SessionsController < DeviseController 
    prepend_before_filter :require_no_authentication, only: [:new, :create] 
    prepend_before_filter :allow_params_authentication!, only: :create 
    prepend_before_filter :verify_signed_out_user, only: :destroy 
    prepend_before_filter only: [:create, :destroy] { request.env["devise.skip_timeout"] = true } 

    # GET /resource/sign_in 
    def new 
    self.resource = resource_class.new(sign_in_params) 
    clean_up_passwords(resource) 
    yield resource if block_given? 
    respond_with(resource, serialize_options(resource)) 
    end 

    # POST /resource/sign_in 
    def create 
    self.resource = warden.authenticate!(auth_options) 
    set_flash_message(:notice, :signed_in) if is_flashing_format? 
    sign_in(resource_name, resource) 
    yield resource if block_given? 
    respond_with resource, location: after_sign_in_path_for(resource) 
    end 
end 

下面是相關航線:

    Prefix Verb  URI Pattern     Controller#Action 
     new_user_session GET  /login(.:format)    devise/sessions#new 
      user_session POST  /login(.:format)    devise/sessions#create 
    destroy_user_session GET  /sign_out(.:format)   users/sessions#destroy 

sessions/new.html.erb視圖使用這種形式:

<%= form_for(resource, as: resource_name, url: user_session_path(resource_name)) do |f| %> 
    <input name="authenticity_token" 
      type="hidden" 
      value="<%= form_authenticity_token %>"/> 
    <div class="field"> 
     <%= f.label :email %><br /> 
     <%= f.email_field :email, autofocus: true %> 
    </div> 
    <div class="field"> 
     <%= f.label :password %><br /> 
     <%= f.password_field :password, autocomplete: "off" %> 
    </div> 
    <% if devise_mapping.rememberable? -%> 
     <div class="field"> 
      <%= f.check_box :remember_me %> 
      <%= f.label :remember_me %> 
     </div> 
    <% end -%> 
    <div class="actions"> 
     <%= f.submit "Log in" %> 
    </div> 
<% end %> 

通知我試圖加入隱藏authenticity_token到地址406 Not Acceptable消息(我也有<%= csrf_meta_tags %>在我的application.html.erb視圖),並從POST我可以s即時消息正在發送。

我的用戶型號擁有devise: :database_authenticatablevalidates_presence_of :email, :password

我欣賞任何提示或建議!我已經嘗試了很多建議,並且有類似的問題here。我可以提供任何其他可能有用的信息。

回答

0

我使用'omniauth-google-oauth2'寶石解決了這個問題。