Pau*_*aul 5 ruby-on-rails logout devise angularjs
我通过GET注销Devise身份验证,但无法使用此Angular.js代码注销:
$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')
Run Code Online (Sandbox Code Playgroud)
设计的注销行为似乎是随机的 - 有时它会退出,有时则不会.如果我进入/users/sign_out
浏览器的地址栏,它会一直注销.
好的,我将Devise身份验证的注销切换为POST请求以消除缓存问题并使用以下Angular.js代码:
$scope.logout = ->
$http.post('/users/sign_out').success ->
$location.path('editor')
Run Code Online (Sandbox Code Playgroud)
第一次它一如既往地退出正常,但我无法让它退出.
我决定用自己的方法来看看会发生什么:
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
Run Code Online (Sandbox Code Playgroud)
和检测后sign_out
的current_user
永远是零,但随后出现奇迹的角度应用程序管理访问ApiController的其他方法,并且CURRENT_USER不无有!
我不明白这个.好吧,让我们假设在注销请求之后(或同时)可能会跟随一些其他HTTP请求,传递身份验证cookie和设计重新登录,但不应该立即过期cookie中传递的会话ID在调用sign_out方法后?!
抱歉,我之前没有回复过,希望这有帮助
我的会话控制器
$scope.signOutUser = function () {
$http.delete('/api/users/sign_out', {
auth_token: Session.currentUser // just a cookie storing my token from devise token authentication.
}).success( function(result) {
$cookieStore.remove('_pf_session');
$cookieStore.remove('_pf_name');
$cookieStore.remove('_pf_email');
location.reload(true); // I need to refresh the page to update cookies
}).error( function(result) {
console.log(result);
});
}
Run Code Online (Sandbox Code Playgroud)
我重写了我的设计会话控制器
class SessionsController < Devise::SessionsController
before_filter :authenticate_user!, only: :destroy
def destroy
token = params[:auth_token]
@user = User.find_by_authentication_token(token)
@user.reset_authentication_token!
sign_out(@user)
render status: :ok, json: {message: "You have successfully logged out"}
end
end
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我没有使用 Rails cookie,因此我的答案可能不适用。如果我这样做,我可能会在销毁操作中添加像 session[:user] = nil 这样的行。
归档时间: |
|
查看次数: |
2115 次 |
最近记录: |