在 $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
使这变得非常简单(这是一种可注射服务)。与仅将其作为常量存储在内存中相比,将其存储在本地存储中的投资是最小的。
我正在开发我的第一个 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
使这变得非常简单(这是一种可注射服务)。与仅将其作为常量存储在内存中相比,将其存储在本地存储中的投资是最小的。