我想弄清楚如何使用 AWS Cognito 登录用户。这些教程似乎都是从注册用户的角度来处理用户的,而不是让他们登录。我不希望用户经历注册过程;这将由我们的办公室用户在别处完成。我只想在这个应用程序中有一个流程,让他们输入他们现有的用户名和密码并登录。
我目前对事物的理解是 Cognito 用户池仅支持使用 Facebook 或 Google 等身份验证提供程序登录,或非身份验证登录,我无法确定这是否使用用户名和密码(我在任何情况下都找不到该流程中的任何地方来提供用户名和密码)。还有 Cognito Federated Identities,它似乎也有一半时间被称为 Cognito User Pools,其中包含上述注册教程,但与仅登录现有用户无关。
我是否必须使用用户池的联合身份版本才能使用用户名和密码登录?如果没有,我该如何处理非联合用户池?如果是这样,我如何制作仅用于登录而不是注册的流程?我正试图从上述教程中获取看起来相关的部分,但我感到沮丧,因为我已经在这个问题上追赶了几个星期,只有更多层的东西依赖于依赖于其他东西的其他东西洞察力。
我在 Node.js 中做过的第一件事,我正在编写一个 AWS Lambda 函数,我想在做任何其他事情之前检查用户的自定义属性是否有值。因为我被告知 Promises 是同步处理异步方法的方式,所以我写了这个函数:
var AWS = require('aws-sdk');
var s3 = new AWS.S3();
var cogId = new AWS.CognitoIdentityServiceProvider();
exports.handler = function (event, context) {
if (event != null)
{
var identityId = context.identity.cognitoIdentityId;
if (event.userId != null)
{
var userId = event.userId;
PromiseConfirmIdNotSet(userId)
.then(SetId(userId, identityId))
.catch();
}
}
context.done(null, 'Hello World'); // SUCCESS with message
};
function PromiseConfirmIdNotSet(userId)
{
console.log('Entering function');
return new Promise(function (resolve, reject) {
console.log('Entering Promise');
cogId.adminGetUser({
UserPoolId: myUserPool,
UserId: userId
},
function …Run Code Online (Sandbox Code Playgroud) 这个问题已经出现过好几次了,每次出现时,我都会忙着弄清楚如何以正确的方式去做,因为我似乎永远无法找到上次需要时是如何做的。
这次出现是因为我意识到httpGet在处理先前的httpGet调用时需要进行额外的调用:
http.getWrapper<T>(whatever)
.pipe<T, T>(map<T, T>(res => getWrapper2<T, T>(res)) // New function, returns the same type it was given
.pipe<T, U>(oldStuff)
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,以前,没有额外的get调用,我的oldStuff处理程序收到了一个T它可以毫无问题地处理的问题。但是新的get调用返回一个Observable<T>,我总是发现弄清楚如何告诉管道链等待 完成get并使用最终值很令人困惑。我能想到做的任何事情,主要似乎是toPromise()和的变体async/await,只是在我和我的数据之间移动额外的层,而我似乎不太能理解它。由于某种原因,插入第二个get似乎总是比第一个更令人困惑get,我不知道我是否需要改变结构,或者只是我的想法不对。
为了让事情变得更加混乱,只有有时才需要额外的处理层:
.pipe(map(res => condition(res) ? getWrapper2(res) : res))
Run Code Online (Sandbox Code Playgroud)
我可以做什么来等待并扁平化它,以便我可以将新get结果传递给链的其余部分pipe?
android ×1
async-await ×1
aws-cognito ×1
aws-lambda ×1
http-get ×1
javascript ×1
node.js ×1
observable ×1
promise ×1
rxjs ×1
typescript ×1