【问题标题】:Storing JWT token ID in $rootScope在 $rootScope 中存储 JWT 令牌 ID
【发布时间】:2015-12-05 20:40:21
【问题描述】:

我正在开发我的第一个 Angular 应用程序并使用 JWT 对用户进行身份验证。用户成功登录后,我将令牌存储在 $rootScope 对象中,即

$rootScope.sessionStorage = {
    "token" : null,
    "loggedIn" : false,
    "userId" : null
};

然后我在进行 API 调用时使用它。

这是存储将在整个应用程序中使用的变量的坏地方吗?我知道如果用户刷新或关闭窗口,该值将会丢失,但这不是问题。

【问题讨论】:

    标签: javascript angularjs jwt


    【解决方案1】:

    如果您不担心刷新摆脱令牌,那么将其存储在内存中就可以了。

    但是,如果您要将其存储在内存中,我认为存储令牌的语义和可扩展性更高的地方将是常量:

    app.constant('TOKEN', token);
    

    $rootScope 隐含地使所有控制器无需注入即可自动使用,我认为在这种情况下您不一定需要。

    您可以在需要的地方注入常量(可能在拦截器中):

    $httpProvider.interceptors.push('myRequestInterceptor');
    

    拦截器的实现取决于您,但通常它只涉及使用Bearer <token> 字段修补Authorization 标头。

    使用本地存储非常简单。 angular-storage 让这很容易(它是一个可注入的服务)。与仅将其作为常量存储在内存中相比,将其存储在本地存储中的投资将是最小的。

    【讨论】:

    • @JonHunter,没问题,很高兴它有帮助。
    猜你喜欢
    • 2019-02-01
    • 2018-12-07
    • 2019-05-06
    • 1970-01-01
    • 2015-09-15
    • 2016-09-13
    • 2020-05-17
    • 2016-03-15
    • 2020-03-23
    相关资源
    最近更新 更多