2015-10-14 18 views
3

我一直在關注Thinkster上的Rails的AngularJS教程,現在我快要結束了User Authentication with Devise。該應用程序似乎是我的本地服務器上正常運行,但是當我看在控制檯上,我總是看到消息:爲什麼我的sign_in.json返回401狀態? (Thinkster上的AngularJS + Rails教程)

Failed to load resource: the server responded with a status of 401 
(Unauthorized) http://localhost:3000/users/sign_in.json 

教程的幾節已經過時,我經過這裏和博客上發現答案帖子,例如有一個路由錯誤,要求bundle update已在問題AngularJS and Rails routing error處解決。 (它不會讓我發佈所有相關鏈接,因爲我是一個新手,所以我不能發佈超過2個,但在本教程中有很多小的東西)。

到目前爲止,我無法弄清楚爲什麼我會得到401,爲什麼它是相關的,當應用程序仍然功能,以及如何解決它。

我不完全確定哪部分代碼是相關的。我在github/KellyTeresa/angular-news上有完整的回購協議,但如果您能指出我正確的方向,我會很樂意提取並添加相關的代碼塊。

+0

您是否使用您的登錄請求提交'form_authenticity_token'? – ACIDSTEALTH

+0

我遇到了同樣的問題,afaik這是用戶重定向登錄頁面的工作方式,但我仍然很高興知道是否有方法檢查用戶是否登錄而沒有錯誤響應 – yossico

回答

0

您可能錯過了您的CSRF令牌,可以通過Rails中的form_authenticity_token變量進行訪問。您可以包括在你的形式,像這樣:

<input name="authenticity_token" type="hidden" ng-model="myModal.token" ng-init="myModel.token='<%= form_authenticity_token %>'"> 

然後確保你的模型具有token屬性,像這樣:

$scope.myModel = { 
    email: $scope.email, 
    password: $scope.password, 
    token: $scope.token 
} 
0

我與401個狀態碼見狀鉻devtools如:

{error: "You need to sign in or sign up before continuing."} 

{error: "Invalid email or password."} 

我覺得這些都是401個狀態碼返回時遺贈是檢查,看看是否我們正在記錄/嘗試登錄我們進去。

我不知道是否在保持原樣,他們有很大的負面影響(他們似乎並不)如何處理它們的最好辦法是(攔截看起來可能),但這些貌似起點:

https://github.com/cloudspace/angular_devise

https://technpol.wordpress.com/2013/09/23/angularjs-and-devise-authentication-with-a-rails-server/

0

在你的配置/初始化/ devise.rb確保您已更改

#config.navigational_formats = ['*/*', :html] 

to 

config.navigational_formats = ['*/*', :html, :json] 
相關問題