8

Railsアプリケーションのユーザー認証にDeviseを使用しています。アプリケーションでデフォルトのrailsスキャフォールディングの代わりにAngularJSを使用しようとしました。問題は、before_filter:authenticate_userを追加すると!コントローラで、リソースを更新/保存および削除するためのAngularJS呼び出しは、Unauthorized Access(401)と言って機能しません。コードの一部を次に示します。

リソース:

@app.factory "employeesDB", ($resource) ->
  $resource("/employees/:id", {id: "@id"}, {update: {method: "PUT"}},
    {destroy: {method: "DELETE"}}
  )

保存アクション:

  $scope.saveEmpl = ->
    $scope.em = new Object if !$scope.em
    employeesDB.save({}, $scope.em, (resource) ->
      $scope.employees.push(resource)
    , (response) ->
      console.log("Failed")
    )

$ scope.emはレコードのデータを含むオブジェクトであり、ng-modelを使用してangularにバインドされます。

before_filter:authenticate_userを削除すると、すべてが完璧に機能します。コントローラから

class EmployeesController < ApplicationController
  #before_filter :authenticate_user!

この問題は、レコードを保存/更新/削除しようとした場合にのみ発生します。レコードを読み取るだけで問題なく動作します。

何か案は??AngularとDeviseを使用するときに従う必要のある特定のガイドラインはありますか?私はrailsとangularJSの初心者なので、詳細な説明をいただければ幸いです。ありがとう

4

2 に答える 2

6

CSRF トークンを使用する必要があることがわかりました。

http://ngmodules.org/modules/ng-rails-csrf

于 2013-03-11T09:19:24.153 に答える