2014-07-01 40 views
1

我有色器件的會話控制器的一個子類:軌道4 +設計+ AJAX:完成401未經授權

class SessionsController < Devise::SessionsController 
    respond_to :html, :js 

    def create 
    login_process do 
     super 
    end 
    end 

    private 

    def login_process 
     if !anonymous_user? 
     old_user = guest_user 
     end 
     yield 
     if user_signed_in? 
     current_user.cart.replace_cart_items!(old_user.cart.cart_items) unless old_user.cart.cart_items.empty? 
     end 
    end 

end 

而且,我從他們的網站上粘貼在其他頁上形成具有定製的登錄表單:https://github.com/plataformatec/devise/wiki/How-To:-Display-a-custom-sign_in-form-anywhere-in-your-app

<div class="log_in_div"> 
     <h3>Log in</h3> 
     <%= form_tag session_path(:user), remote: true do %> 
      <div> 
       <%= label_tag 'user[email]', 'Email' %> 
       <%= text_field_tag 'user[email]' %> 
      </div> 
      <div> 
       <%= label_tag "user[password]", "Password" %> 
       <%= password_field_tag 'user[password]' %> 
      </div> 

      <%= check_box_tag 'user[remember_me]' %> 
      <%= label_tag 'user[remember_me]', 'Remember me' %><br> 
      <%= submit_tag "Log in" %> 
      <%= link_to "Forgot your password?", new_password_path(:user) %> 
     <% end %> 
    </div> 

然而,當我通過瀏覽器提交表單,我得到這個:

Processing by SessionsController#create as JS 
     Parameters: {"utf8"=>"✓", "user"=>{"email"=>"gfdgdgd", "password"=>"[FILTERED]"}, "commit"=>"Log in"} 
    Completed 401 Unauthorized in 3ms 

有誰知道發生了什麼事?

回答

0

如果您使用的是Ajax調用的色器件登錄 - 中色器件初始化

設置< config.http_authenticatable_on_xhr =假>

,並設置<%= csrf_meta_tags%>在應用程序佈局

0

添加將skip_before_filter :authenticate_user!添加到SessionsController。