保存Amazon Cognito用户凭证,而无需本地存储



我正在使用Amazon Cognito用于使用JavaScript SDK的网站用户登录,该网站使用本地存储来保存用户的凭据,该凭据用于自动登录。从计算机上的本地文件运行时,这无效。

是否可以指导JavaScript SDK通过某些其他方式保存用户凭据,而不是本地运行网站时的本地存储?

我已经看到了更改存储对象的引用,但是我找不到有关如何实际实现自定义存储解决方案的任何示例。https://github.com/aws/amazon-cognito-isentity-js/pull/363

回答您的确切问题

如您链接到的拉请求所示,您现在可以指定一个存储对象以供池使用。根据MDN:LocalStorage和SessionStorage,有两个内置的存储对象。您可能可以按原样使用SessionStorage(我没有尝试过(。它将在页面重新加载下幸存下来,但在关闭页面/选项卡时将清除。新标签获得了一个新的SessionStorage对象。

let pool = new CognitoUserPool({ 
  UserPoolId, 
  ClientId, 
  storage: window.sessionStorage 
});

如果那不起作用,则需要构建实现存储API的对象。这很简单,无需花费太多。总共有5种方法,大多数可以用简单的Object

映射1:1
Storage.key(int n); // Return the Nth key
Storage.getItem(string key) // return the value for given key
Storage.setItem(string key, string value) // store a value at key
Storage.removeItem(string key) // remove the value for key
Storage.clear() // delete all values

这是一个将存储API实现在内存中的NPM软件包。缺点是页面刷新将清除它。

您可以从源代码中看到,它不是很复杂。

但是

我认为,更好的替代方法是使用非常简单的服务器(例如Serve或Web服务器(将Chrome使用HTTP上的文件,以便localstorage(以及页面的许多其他部分(如您期望的那样工作。<<<<<<<<<<<<<<<</p>

最新更新