【发布时间】:2019-05-06 21:44:15
【问题描述】:
使用:Nodejs + aws-amplify
来自aws amplify documentation,但是登录后我没有成功检查用户。
index.js
const Amplify = require('aws-amplify');
global.fetch = require('node-fetch'); // [source](https://github.com/aws-amplify/amplify-js/issues/876)
global.navigator = {};
Amplify.default.Auth({
identityPoolId: IDENTITYPOOLID,
region: REGION,
userPoolId: USERPOOLID,
userPoolWebClientId: APPCLIENTID,
});
Amplify.Auth.signIn(username, password).then(user => {
localstorage.set('user', JSON.stringify(user));
console.log(user); // "cognitoUser" object
return Amplify.Auth.getSession();
}).then(session => {
console.log(session); // "CognitoSession" object
}).catch(err => {
console.log(err);
});
// PROBLEM
Amplify.Auth.getSession().then(session => {
console.log(session);
}).catch(err => {
console.log(err); // PRINT: no current user
});
看起来我无法获取用户会话,除非它包含在 Auth.signIn 中。我试过用;
// Problem
let userObj = JSON.parse(localstorage.get('use'));
Amplify.Auth.userSession(userObj).then(data => {
console.log(data);
});
/// getSession is not a function
console.log(Amplfy.Auth.userSession); // PRINT: [Function]
我可以验证 userSession 是函数并且在库中,我看到的问题是getSession() 不在我存储在本地存储中的 CognitoUser 对象中。
如果这是问题所在,我找不到任何可以帮助我将 localstorage 对象转换为 CognitoObj 的函数。我唯一能做的就是每次都签署用户,这忽略了这个库的全部目的。
我错过了什么吗?为什么Amplify.Auth 不起作用?有没有办法检查任一用户的会话是否过期并手动刷新它?
我有与github 类似的问题。
【问题讨论】:
标签: node.js asynchronous promise async-await aws-amplify