Angularjs 角度:跨控制器共享登录状态

Angularjs 角度:跨控制器共享登录状态,angularjs,authentication,mean,Angularjs,Authentication,Mean,我有一个相当简单的angular应用程序,它在平均堆栈上工作,不使用ui路由器,我现在想保持这种方式 我想知道在应用程序中共享用户登录状态的最佳方式是什么 例如,我想要一个指令,如果用户未登录,则显示注册或登录;如果用户已登录,则显示Hello、username 在我的整个应用程序中,许多指令都涉及登录状态,因此使用多个控制器并在每个控制器上声明logged-in$scope属性似乎不是最好的主意。我怎样才能做到这一点 作为跟进,有没有关于了解用户是否登录的最佳方法的建议?现在我基于一个存储在本

我有一个相当简单的angular应用程序,它在平均堆栈上工作,不使用ui路由器,我现在想保持这种方式

我想知道在应用程序中共享用户登录状态的最佳方式是什么

例如,我想要一个指令,如果用户未登录,则显示注册或登录;如果用户已登录,则显示Hello、username

在我的整个应用程序中,许多指令都涉及登录状态,因此使用多个控制器并在每个控制器上声明logged-in$scope属性似乎不是最好的主意。我怎样才能做到这一点

作为跟进,有没有关于了解用户是否登录的最佳方法的建议?现在我基于一个存储在本地存储中的身份验证令牌,但它也可能是cookies

我想知道一种最佳做法,即我可以存储用户的登录状态,还可以存储他们的信息名称、挑选的物品等,并将其同步到我的服务器,这样如果他们登录到另一台计算机上,他们的购物车将保持不变

谢谢

写一个服务:

angular.module('myApp')
.service('Auth', function() {
    var loggedInState = {}; // log in state data

    var logIn = function() {
        // send log in request
    }

    return {
        state: loggedInState,
        logIn: logIn
    }
})

现在,您可以将此服务注入到任何您想知道他们是否已登录的地方,并检查状态

与工厂在控制器之间共享已登录的布尔值。控制器之间共享工厂数据的一个简单示例,好的,那么如果我想有条件地显示或隐藏某个指令中的内容,这已经注入了,我该怎么做呢。换句话说,我如何访问此身份验证服务的属性,并在插入后将其设置为指令中的$scope?将服务插入控制器中,并将您需要的属性从服务分配给控制器范围,或整个服务(如果您愿意)。明白了。我明白了,将控制器注入到指令的控制器属性中。您将服务注入到控制器、指令中,不管是什么:。指令'header',functionAuth,newFactory{…}当我尝试此操作时,返回loggedInState的对象,我的模板中没有显示任何内容。但是,如果我直接在返回值中输入一个对象,则该对象的值确实会出现。你知道这是为什么吗?