【问题标题】:$firebaseAuth logs me out after refresh (facebook)$firebaseAuth 刷新后注销我(facebook)
【发布时间】:2015-03-14 08:09:08
【问题描述】:

我正在使用 $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/");

        }

    });

}]);

为了完整起见,我的 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"

这只发生在所有页面的刷新时。如果我不刷新,则身份验证工作正常。

有什么想法吗?

谢谢,

【问题讨论】:

    标签: angularjs facebook angularfire firebase-security


    【解决方案1】:

    不确定是不是您的问题,但来自: https://www.firebase.com/docs/web/guide/login/facebook.html

    可选设置

    authWithOAuthPopup() 和 authWithOAuthRedirect() 采用可选的第三个参数,它是一个包含以下任何设置的对象:

    记住
    如果未指定 - 或设置为默认值 - 只要您在 Firebase 仪表板的“登录和身份验证”选项卡中进行了配置,会话就会持续存在。 将持续时间限制在生命周期内当前窗口的,将其设置为 sessionOnly。 none 值根本不会保留身份验证数据,并且会在页面关闭后立即结束身份验证。

    我不知道页面刷新是否算作关闭页面,但可能值得检查 Login 和 Auth 中的值,以确保它没有被设置为不可靠的东西,我刚刚测试过,它很乐意让你设置到 0

    【讨论】:

    • 瑞克,谢谢你的回答,但它似乎已经解决了。我没有对我的代码进行任何更改,所以我猜这是某种 firebase 问题。
    • 我希望该链接仍然有效。这不是唯一一个链接断开的类似指南,所以我猜他们的文档一定已经更新了。
    猜你喜欢
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    • 2016-05-09
    相关资源
    最近更新 更多