gpt4 book ai didi

ruby-on-rails - 使用 Rails 的身份验证错误 - 设计和 AngularJS

转载 作者:行者123 更新时间:2023-12-04 04:07:11 24 4
gpt4 key购买 nike

我在 Rails 应用程序中使用 Devise 进行用户身份验证。我尝试在应用程序中使用 AngularJS 而不是默认的 rails 脚手架。问题是当我添加 before_filter :authenticate_user!在 Controller 中然后AngularJS调用更新/保存和删除资源不起作用说未经授权的访问(401)。这是一些代码:

资源:

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

保存 Action :
  $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 绑定(bind)到 angular。

如果我删除 before_filter :authenticate_user,一切都会完美!从 Controller
class EmployeesController < ApplicationController
#before_filter :authenticate_user!

仅当我尝试保存/更新/删除记录时才会出现问题,只需阅读它就可以了。

有任何想法吗??在使用 Angular 和 Devise 时,我应该遵循任何特定的指导方针吗?
我是 rails 和 angularJS 的新手,因此将不胜感激详细的解释!
谢谢

最佳答案

您可以将此添加到您的 app.js :

myApp.config([
"$httpProvider", function($httpProvider) {
$httpProvider.defaults.headers.common['X-CSRF-Token'] = angular.element('meta[name=csrf-token]').attr('content');
}
]);

它将 CSRF token 添加到所有 Angular 请求中。

编辑:现在 jQuery 独立(使用 jqLite )。

关于ruby-on-rails - 使用 Rails 的身份验证错误 - 设计和 AngularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15290559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com