我正在使用$ firebaseAuth来控制我的应用程序的登录部分。一切都运行良好,但现在,刷新后,我立即退出。
我路线的一部分:
}).when("/login/", {
templateUrl:"partials/login.html",
controller:"tiki.controller.login"
}).when("/settings/profile/", {
templateUrl:"partials/settings.profile.html",
controller:"tiki.controller.settings.profile",
resolve:authenticate()
})
authenticate()函数:
function authenticate(){
return {"currentAuth": ["firebaseAuth", function(firebaseAuth) {
console.log(firebaseAuth.requireAuth())
return firebaseAuth.requireAuth();
}]}
}
捕获路由更改错误的.run()块:
angular.module('tiki').run(["$rootScope", "$location", function($rootScope, $location) {
$rootScope.$on("$routeChangeError", function(event, next, previous, error) {
// We can catch the error thrown when the $requireAuth promise is rejected
// and redirect the user back to the home page
if (error === "AUTH_REQUIRED") {
$location.path("/login/");
}
});
}]);
对于completness我的firebaseAuth.js服务:
'use strict';
/* Services */
angular.module("tiki").factory("firebaseAuth", ["$firebaseAuth", function($firebaseAuth){
var ref = new Firebase("https://blistering-xxx.firebaseio.com/");
if(ref){
var service = $firebaseAuth(ref)
}
function loginFacebook(){
return service.$authWithOAuthPopup("facebook")
}
function logOut(){
service.$unauth()
}
function getState(){
var state = service.$getAuth()
if(state){
return state
}
}
function getUserName(){
if(getState()){
return getState().facebook.displayName
}
}
function requireAuth(){
return service.$requireAuth()
}
function service(){
return service
}
return {
loginFacebook:loginFacebook,
logOut:logOut,
getState:getState,
getUserName,
requireAuth:requireAuth,
service:service
}
}])
当我在/ settings / profile /中刷新时,我会退出并退回到/ login /。
authenticate()函数中的console.log()返回:
status: 2
value:"AUTH_REQUIRED"
这仅在所有页面上刷新时发生。如果我不刷新,那么身份验证工作正常。
有什么想法吗?
THX,
答案 0 :(得分:0)
不确定是否是您的问题,但来自: https://www.firebase.com/docs/web/guide/login/facebook.html
可选设置
authWithOAuthPopup()和authWithOAuthRedirect()采用可选的第三个参数,该参数是包含以下任何设置的对象:
记住
如果未指定 - 或设置为默认值 - 只要您在Login& amp;中配置,会话就会保留。 Firebase的信息中心的验证标签。要将持久性限制为当前窗口的生命周期,请将其设置为sessionOnly。 值为none根本不会保留身份验证数据,并会在页面关闭后立即结束身份验证。
我不知道页面刷新是否算作关闭页面,但是可能值得检查Login和Auth中的值,以确保它没有被设置为某些东西,我刚刚测试过它很乐意让你把它设置为0