Angularfire Auth会话持久性

时间:2016-06-15 10:17:36

标签: angularjs firebase angularfire

这是我第一次使用AngularJs,不确定我的身份验证是否正确处理。
我希望即使我刷新应用程序,$firebaseAuth()也会保持身份验证状态。但每次刷新应用程序时,$firebaseAuth()都不会重新验证用户身份,我需要重新登录。
我阅读了文档并在源代码中搜索,但找不到允许我配置会话持久性的函数。只接受2个参数emailpassword

版本:
angularjs v1.4.10
angularfire v2.0.1
firebase v3.0.3

我的authenticationService litcoffee脚本

app.factory "authenticationService", [
    "$firebaseAuth"
    "$location"
    "$rootScope"
    ($firebaseAuth, $location, $rootScope) ->
        login: (email, password, redirectUrl = "/") ->
            $rootScope.authObj.$signInWithEmailAndPassword(email, password)
            .then(
                (firebaseUser) ->
                    console.log firebaseUser
                    $rootScope.firebaseUser = firebaseUser
                    return true

                (error) ->
                    $rootScope.firebaseUser = null
                    console.log error
                    alert error.message
                    return false
            )

        logout: (redirectUrl = "/login") ->
            $rootScope.authObj.$signOut()
            $location.path redirectUrl

        isLogged: () ->
            if $rootScope.authObj.$getAuth()
                return true
            else    
                return false

]

我在将调用authenticationService.isLogged()的控制器上检查用户身份验证状态,如果用户未登录,它将重定向到登录页面。
我想要实现的只是一个简单的身份验证,用户即使刷新也会保持身份验证状态。
如果我的方向错误,请纠正我。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

实际上这是我的错。 Firebase和AngularFire默认保持身份验证会话持久性。 我做错了是在加载页面时立即检查身份验证状态。目前AngularFire尚未解雇,重新验证应用程序需要一些时间。

因此,$firebaseAuth.$onAuthStateChanged可能非常有用。 加载页面时收听它。一旦事件被触发,它将通知您用户是否经过身份验证。