在 $rootScope 中存储 JWT 令牌 ID

Storing JWT token ID in $rootScope

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

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

然后我在拨打 API 电话时使用它。

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

如果你不担心刷新去掉token,那么存入内存就可以了。

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

app.constant('TOKEN', token);

$rootScope 隐式地使所有控制器自动可用而无需注入,我认为这不是您在这种情况下所必需的。

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

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

拦截器的实现由您决定,但通常只涉及用 Bearer <token> 字段修补 Authorization header。

使用本地存储非常简单。 angular-storage 使这变得非常简单(这是一种可注射服务)。与仅将其作为常量存储在内存中相比,将其存储在本地存储中的投资是最小的。