zrobiłem uwierzytelniania opracować, aby zalogować się za pośrednictwem GET, ale nie mógł zrobić to zalogować się przy użyciu tego kodu angularjs:nie można zrobić, aby wylogować się opracować od angularjs
$scope.logout = ->
$http.get('/users/sign_out').success ->
#If it does not redirect from 'editor' to 'login' then you haven't actually logged out
$location.path('editor')
zachowanie wylogowania opracować wydaje się być losowym - czasami się wylogowuje, czasem nie. A jeśli wprowadzę /users/sign_out
na pasku adresu przeglądarki, wyloguje się zawsze.
Ok, przeszedłem dziennik uwierzytelniania opracować OUT POST żądanie, aby pozbyć się problemów buforowania i stosowane następujące kodu angularjs:
$scope.logout = ->
$http.post('/users/sign_out').success ->
$location.path('editor')
Pierwszy raz wylogować dobrze, jak zawsze, ale potem Nie mogłem go wylogować.
postanowiłem zrobić mój własny sposób, aby zobaczyć, co się dzieje:
match '/logout' => 'api#logout', :via => :post
class ApiController < ApplicationController
before_filter :authenticate_user!
def logout
sign_out
if current_user
puts 'Has not signed out!'
else
puts 'Has signed out!'
end
head :ok
end
end
i wykrył, że po sign_out
current_user
zawsze jest zerowa, ale wtedy kątowe aplikacja jakimś cudem udaje się uzyskać dostęp do innych metod ApiController, a current_user nie ma tam nikogo!
Nie rozumiem tego. OK, załóżmy, że może nastąpić inne żądanie HTTP, zaraz po (lub w tym samym czasie co) żądaniu wylogowania, przekazaniu pliku cookie uwierzytelniającego i Wykrywaniu ponownych logowań, ale nie powinien wygasać identyfikator sesji przesłany w ciasteczku natychmiast po wywołaniu metody sign_out ?!
czy zrobiłeś swoje sign_out [route a: uzyskać trasę w devise.rb?] (Http://stackoverflow.com/questions/6557311/no-route-matches-users-sign-out-devise-rails-3) – shicholas
@shicholas: oczywiście – Paul
co powiesz na rails cookies lub ng cookies? – shicholas