我应该如何在 AngularFire/Firebase 中使用户访问令牌失效
How should I invalidate user access tokens in AngularFire/Firebase?
>上下文
使用在此处和此处找到的注销用户的说明。
我正在使用AngularFire和AngularJS,并通过电子邮件和密码方法对用户进行身份验证。
问题所在
调用$unauth
不会使用户的令牌失效:对$authWithPassword
的后续调用将返回相同的身份验证令牌。
注意:令牌在服务器上设置的过期时间后正确失效。
《守则》
angular
.module('app')
// Auth Factory
.factory("Auth", ["$firebaseAuth", "FIREBASE_URI",
function($firebaseAuth, FIREBASE_URI) {
var ref = new Firebase(FIREBASE_URI);
return $firebaseAuth(ref);
}
])
控制器:
function authenticationCtrl($scope, $state, authService) {
var authenticationCtrl = this;
// LOGIN
var login = function (userObject) {
authService.loginWithPassword(userObject, function () {
$state.go('[...]');
},
function (errorText) {
// ERROR
console.error("Error logging in user:", errorText)
});
};
// LOGOUT
var logout = function () {
// Clear locally logged in user
$scope.authData = null;
authService.logout();
};
// PUBLIC
return {
login: login,
logout: logout
};
};
angular
.module('app')
.controller('authenticationCtrl', authenticationCtrl)
服务:
function authService($state, FIREBASE_URI, Auth) {
var model = this,
ref = new Firebase(FIREBASE_URI);
// LOGIN
model.loginWithPassword = function(credentials, callBack, errorCallBack) {
Auth.$authWithPassword(credentials)
.then(function(authData) {
model.cachedUser = authData;
callBack();
}).catch(function(error) {
console.error("Authentication failed:", error);
});
};
// LOGOUT
model.logout = function() {
Auth.$unauth();
model.cachedUser = null;
$state.go('common.login');
};
};
angular
.module('app')
.service('authService', authService)
如果您
使用的是 Firebase 的电子邮件和密码身份验证提供程序,则无法手动使令牌失效。执行此操作的唯一方法是使用自定义身份验证实现自行生成令牌。然后,您可以通过撤销用于生成令牌的 Firebase 机密来使令牌失效。
相关文章:
- 使用Javascript获取Twitter访问令牌
- FB.login访问令牌facebook javascript SDK
- Phonegap:获取访问令牌时出现LinkedIn登录错误
- 打开图形:Java脚本:必须使用活动访问令牌来查询有关当前用户的信息
- 必须使用活动访问令牌来查询有关具有打开图的当前用户的信息
- 在JS web应用程序中,如何确保具有访问令牌的恶意用户无法刷新它
- 如何获取用户访问令牌,与图形 API 资源管理器中使用的令牌相同
- 仅使用访问令牌在节点中获取Google+用户配置文件
- 使用具有应用程序访问令牌的图形 API 搜索用户
- FB.logout() - 无访问令牌 - “以其他用户身份登录”
- 如果用户喜欢Facebook页面,则无需请求访问令牌
- 必须使用活动访问令牌来查询有关当前用户的信息
- 如何在Google OAuth2中获得用户登录并同意后的访问令牌和刷新令牌
- Facebook图形API -如何在前端使用,无需用户登录和获取访问令牌
- 如何在AngularFire2中获得当前用户的访问令牌?
- 用户访问令牌格式错误
- LinkedIn访问令牌用于验证用户并使用JSAPI发送消息
- 必须使用活动的访问令牌来查询当前用户的信息|访问令牌似乎是有效的
- 如何使用访问令牌机制以角度.js重定向用户
- 环回抛出未定义的访问令牌,即使用户已登录