Używam Devise do uwierzytelniania użytkownika w aplikacji Rails. Próbowałem użyć AngularJS zamiast domyślnego rusztowania szyn w aplikacji. Problem polega na tym, że po dodaniu pliku before_filter: authenticate_user! w kontrolerze wywołania AngularJS, aby zaktualizować/zapisać i usunąć zasób, nie działa mówiąc Nieautoryzowany dostęp (401). Oto niektóre z kodu:Błąd uwierzytelniania przy użyciu Rails - Devise i AngularJS
Zasób:
@app.factory "employeesDB", ($resource) ->
$resource("/employees/:id", {id: "@id"}, {update: {method: "PUT"}},
{destroy: {method: "DELETE"}}
)
Zapisuj działania:
$scope.saveEmpl = ->
$scope.em = new Object if !$scope.em
employeesDB.save({}, $scope.em, (resource) ->
$scope.employees.push(resource)
, (response) ->
console.log("Failed")
)
$ scope.em jest obiektem zawierającym dane na płycie i to wiążą się kątowe za pomocą modelu ng.
Wszystko działa idealnie, jeśli usunę filtr before_filter: authenticate_user! od kontrolera
class EmployeesController < ApplicationController
#before_filter :authenticate_user!
Problem występuje tylko wtedy, gdy próbuję zapisać/zaktualizować/usunąć rekord, tylko odczytywanie działa poprawnie.
Jakieś pomysły? Czy są jakieś konkretne linie pomocnicze, które powinienem stosować podczas używania Angular i Devise? Jestem początkującym na szynach i angularJS, więc szczegółowe wyjaśnienie będzie bardzo mile widziane! Dzięki
Czy próbowałeś przekazać parametr 'withCredentials' do domyślnych wartości $ httpProvider? 'app.config (['$ httpProvider', funkcja ($ httpProvider) {$ httpProvider.defaults.withCredentials = true;}]);'? – Stewie
Dodano następujące elementy, ale niestety to nie zadziałało. Pojawia się ten sam problem. @ App = angular.module ("Mathra", ["ngResource"]). Config (['$ httpProvider', ($ httpProvider) -> $ httpProvider.defaults.withCredentials = true ]) – jkotzi