【问题标题】:Ionic - How to store session token as globally (for app) accessible variable?Ionic - 如何将会话令牌存储为全局(对于应用程序)可访问变量?
【发布时间】:2020-08-21 03:35:25
【问题描述】:

我知道我可以使用 localstorage 或 SQLite,但我不知道该怎么做。

在我的应用程序中,我在登录控制器中获取会话令牌,在该控制器中我向服务器发出发布请求,并返回获取会话令牌。

我不确定如何让这个令牌全局可访问。

P.S:我对 AngularJs 很陌生。

【问题讨论】:

  • 本地存储示例请参考此博客link

标签: angularjs session ionic-framework


【解决方案1】:

从服务器获取令牌后在控制器中

$scope.token = token;

你可以说

localStorage.setItem("token", $scope.token);

那么当你想要获取令牌时(比如在另一个控制器中)你只需要说

$scope.token = localStorage.getItem("token");

此外,如果他们重新打开应用程序,您甚至可以检查他们是否已经拥有令牌

if(localStorage.getItem("token") !== null && localStorage.getItem("token") !== ""){//go ahead and authenticate them without getting a new token.}

另外请注意,如果您想清除令牌,则在注销时只需设置即可

localStorage.setItem("token", "");

但请注意,您只能将本地存储设置为字符串,而不是布尔值或 null。

更新:我看到人们仍在引用此内容,并想添加一个警告。在 IOS 上,本地缓存似乎被操作系统自动清除。我不确定是什么触发了这种情况,但我遇到了用户丢失存储在本地存储中的设置的问题。如果这对您来说是个问题,我建议您查看 IndexedDB、pouchdb、sqllite 或其他替代方案。

【讨论】:

  • 令牌过期了怎么办?
  • 然后检查token是否过期(命中一个api端点),如果是则删除或覆盖它。
  • 这里也是 AngularJS 的超级新手。这在 iOS 和 Android 上被认为是安全的吗?不管这些平台的所有旧版本,这在今天是否安全?
  • 在大多数情况下是的,本地存储只能由它设置的域访问,如果有人可以物理访问机器并拥有可以读取的开发工具,但如果他们有物理访问您可以访问的机器不仅仅是拉本地存储的人。我不会将信用卡信息存储在本地存储中,但过期的令牌,也许是页面设置,都可以正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多