Ruby on rails 使用Rails-Desive和AngularJS的身份验证错误
我正在Rails应用程序中使用Desive进行用户身份验证。我尝试在应用程序中使用AngularJS而不是默认的rails脚手架。问题是,当我添加before\u过滤器时:authenticate\u user!在控制器中,AngularJS调用更新/保存和删除资源,表示未经授权的访问无效(401)。下面是一些代码: 资源:Ruby on rails 使用Rails-Desive和AngularJS的身份验证错误,ruby-on-rails,authentication,devise,angularjs,Ruby On Rails,Authentication,Devise,Angularjs,我正在Rails应用程序中使用Desive进行用户身份验证。我尝试在应用程序中使用AngularJS而不是默认的rails脚手架。问题是,当我添加before\u过滤器时:authenticate\u user!在控制器中,AngularJS调用更新/保存和删除资源,表示未经授权的访问无效(401)。下面是一些代码: 资源: @app.factory "employeesDB", ($resource) -> $resource("/employees/:id", {id: "@id"
@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模型绑定到angular
如果我删除before\u过滤器:authenticate\u user,一切都会很完美!从控制器
class EmployeesController < ApplicationController
#before_filter :authenticate_user!
class EmployeesController
只有当我尝试保存/更新/删除记录时,问题才会出现,只要读取它就可以了
有什么想法吗??在使用Angular和Desive时,我应该遵循哪些特定的指南?
我是rails和angularJS的新手,请详细解释!
谢谢我发现我必须使用CSRF令牌
您可以将其添加到您的
app.js
:
myApp.config([
"$httpProvider", function($httpProvider) {
$httpProvider.defaults.headers.common['X-CSRF-Token'] = angular.element('meta[name=csrf-token]').attr('content');
}
]);
将CSRF令牌添加到所有角度请求中
编辑:现在jQuery独立(使用)。您是否尝试将
with credentials
参数传递给$httpProvider默认值<代码>app.config(['$httpProvider',函数($httpProvider){$httpProvider.defaults.withCredentials=true;}])代码>?添加了以下内容,但不幸的是它不起作用。我也遇到同样的问题。@app=angular.module(“Mathra”,[“ngResource”]).config(['$httpProvider',($httpProvider)->$httpProvider.defaults.withCredentials=true])