使用 Cognito 的 forgotPassword 函数时,如果我尝试运行忘记密码方法超过 5 次,则会收到“LimitExceededException”错误。
此时是否有关于此的进一步文档?
几年前这个问题提出了类似的观点,但没有关于任何文档的指导。而这个问题提出了一个类似的问题,有意见沮丧注意到没有关于等待多久没有指导。
我希望有以下方面的指导:
用户需要等待多长时间才能再次尝试?对我的用户说“请稍后再试”没有任何帮助,而没有任何关于何时的指导。在我的测试中,我等了30多分钟后,仍然出现错误。这对用户来说似乎太过分了。
我可以将此保护添加到登录过程中吗?(不仅仅是重置密码过程)。这种安全保护在登录的情况下似乎不会发生。在那里,我可以多次输入错误的密码而不会出现“尝试次数过多”类型的警告。我认为这是一个重要的安全步骤。
我在生产中有一个 Angular 8 PWA 应用程序。我定期进行大量更新,因此我需要找到一种方法让用户在打开应用程序时获取这些更新。
如果没有特殊操作,应用程序将不会更新。如果您在浏览器上打开该应用程序,它会显示您上次打开该应用程序时的版本,即使我已将新捆绑包推送到生产环境。这似乎是 PWA 功能的不幸结果。
我使用 AWS Amplify 进行托管。
为了解决这个问题(我在这里问过一个问题),我尝试使用 swUpdate。
问题是它的工作速度太慢了。如果有更新,它会重新加载浏览器——但这需要一段时间。用户打开应用程序后通常需要几秒钟才能重新加载。所以你打开应用程序,4 到 6 秒后应用程序重新加载新版本。
有没有办法让 swUpdate 运行得更快?或者加载新应用程序版本的替代方法?
这是我的代码,我认为这是一个简单的实现:
app.component.ts:
import { Component } from '@angular/core';
import { SwUpdate } from '@angular/service-worker';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
constructor(private swUpdate: SwUpdate) {
title = 'Great App'
swUpdate.available.subscribe(event => {
swUpdate.activateUpdate().then(() => {
window.location.reload();
console.log('there is an Update! Reloading now.')
});
})
if (!this.swUpdate.isEnabled) {
console.log('Not going to update');
} …
Run Code Online (Sandbox Code Playgroud) 是否可以在没有单独网站的情况下设置 iOS 通用链接?
例如,如果您想要一个通用链接:1) 如果用户在其设备上安装了 iOS 应用程序,则打开您的 iOS 应用程序;2) 在未安装该应用程序的任何设备上打开应用程序商店列表。
似乎拥有一个由您控制的单独域是实现此目的的标准方法。Apple 文档(此处)以及此处和此处等其他指南似乎清楚地表明您需要将 Apple App Site Association 文件中的 JSON 代码添加到您控制的单独网站。
但是是否可以在没有该网站的情况下设置通用链接?
细节:
对于 iOS 移动应用程序开发人员来说,设置单独的网站、处理网站托管等与构建 iOS 应用程序是不同的,并且仅针对通用链接需要完成一项额外的任务。许多开发人员可能已经拥有一个网站,或者除了移动应用程序之外,还拥有构建网站的经验,但这与构建移动应用程序仍然是不同的事情。
因此,如果 Apple 假设应用程序开发人员已经准备好为此目的而准备的网站,我会感到惊讶。我注意到有一些非 Apple 替代品可以做类似的事情,但显然不需要网站。
编辑:我熟悉替代链接系统,例如 Firebase 和 Branch。我想看看您如何使用 Apple Universal Links 做到这一点。
因此,假设您想坚持使用 Apple 通用链接。有没有办法在不建立网站,处理主机(以及潜在成本)等的情况下做到这一点?
如果有必要,为移动开发人员设置适用于通用链接的最低限度站点的最便宜和最简单的方法是什么?
我正在使用 AWS Amplify,并使用 Cognito 进行用户身份验证。
用户进入用户池,仅使用电子邮件地址和密码进行注册和登录。
当通过 Cognito 登录的用户导航到某个页面时,我希望检索他们的电子邮件地址。我怎样才能做到这一点?
我可以使用此代码检索一些用户数据(我使用的是 javascript/Angular):
import Auth from '@aws-amplify/auth';
...
ngOnInit(){
Auth.currentAuthenticatedUser().then((user)=>{
console.log('user = ' + JSON.stringify(user.pool))
})
}
Run Code Online (Sandbox Code Playgroud)
电子邮件确实出现在响应中,但我还没有能够将电子邮件与返回的 JSON 隔离开来。
我试过浏览文档,但我还没有找到关于我可以添加的属性选项之类的信息currentAuthenticatedUser()
,或者是否有另一种更清晰的方法(我假设有)。
编辑:它看起来像以下作品:
Auth.currentAuthenticatedUser().then((user) => {
console.log('user email = ' + user.attributes.email);
});
Run Code Online (Sandbox Code Playgroud)
但我仍然希望更好地理解文档。我在一个随机的 github 问题中找到了这个解决方案,而不是官方文档。我可以在 AWS Amplify / Cognito 文档中的何处找到此解决方案?
我想为订阅实现 Stripe 结账。我已遵循此处的指导,一切正常。然而,Stripe 提供的结账表单要求用户输入 (i) 卡上的姓名以及 (ii) 用户的电子邮件。
有没有办法去掉这两项,这样用户就不需要输入它们了?删除这些项目是否可以接受(就安全而言)?
这里的目标是让用户轻松完成支付流程,并限制我有权访问的有关用户的信息。
我正在使用节点。
请注意,我将在注册过程中的其他地方收集用户的电子邮件,因此在结帐表单上显示电子邮件是多余的(即使我可以预先填写它)。
以下是更多细节:
当我使用 Stripe Elements 而不是 Checkout 时,一切似乎都工作正常,不需要客户的姓名。
我还以为旧的 Checkout 不需要名称 - 我相信旧的模式没有名称字段。多年来我完成的许多具有条纹样式的信用卡表格都不需要信用卡表格中的姓名或电子邮件。
根据此答案,表单通常不需要名称,因为它通常不会在验证过程中实际使用(尽管该答案已有几年历史)。
我在这里看到 2017 年的一个答案,指出电子邮件字段是必填字段。我想知道情况是否仍然如此。
编辑:我知道如果我想使用完全可定制的表单,那么我可以使用 Elements。但这是关于结帐的问题。Elements 加载的表单不要求用户输入姓名,而 Checkout 以前也不要求用户输入姓名。如果 Checkout 现在确实需要姓名,Stripe 是否解释过原因?
I have data saved in a Microsoft excel file. I need to turn that data into something that a Lambda function can parse.
I think the best way to do this is to convert the excel file into a JSON file (and then my Lambda function can read and parse it).
What's the best way to do this?
To convert the excel data file into a JSON file, I have found some handy online converter tools, like this one. …
我在 AWS Lambda 中有一个函数可以检索 Stripe 中的用户详细信息。但是函数后面的代码首先执行。我缺少什么?
就我而言,该函数调用返回客户对象的 Stripe 函数。
我认为 Stripe 函数的细节与这个特定问题无关——问题是我的 async/await 的结构:
module.exports.getUserName = async (event, context)=>{
[code to get customerId from stripe]
var customerName
await stripe.customers.retrieve(customerId, function(err, customer){
if (err){}
else{
customerName = customer.name
}
})
console.log('This should run after stripe.customers.retrieve')
}
Run Code Online (Sandbox Code Playgroud)
现在console.log语句首先运行。我还尝试将 Stripe 函数包装在单独的异步函数中,并尝试添加 try/catch。但它还没有发挥作用。
我如何确定控制台日志语句在之后运行stripe.customers.retrieve
?
我有一个 Angular 8 应用程序,我运行此命令来尝试设置 PWA 功能:
$ ng add @angular/pwa --project my-app
Run Code Online (Sandbox Code Playgroud)
从那里开始,文件的设置似乎与您对 PWA 的期望一样,如此处所述。
开发过程中没有错误。
不过,我现在已将该应用程序投入生产,并通过 AWS Amplify 托管,我相信这种添加 PWA 功能的尝试已经产生了问题。
一旦浏览器加载生产应用程序,它就会“卡在”该版本的应用程序上。例如,我的 Chrome 浏览器仍然加载几天前该应用程序的第一个版本,尽管此后我已经在 amplify 上多次更新了该应用程序。这种情况也发生在其他浏览器(例如 mobile safari)上。
当它加载旧版本时,它会在检查器中显示此错误:
Manifest: Line: 1, column: 1, Syntax error.
Run Code Online (Sandbox Code Playgroud)
因此,在某种程度上,AWS 并没有在 PWA 功能方面取得进展。是否有已知的修复方法?
该应用程序现已投入生产,因此我非常感谢您的帮助。
更多细节:
有关更多背景信息,我的 index.html 包含以下内容:
<link rel="manifest" href="manifest.webmanifest">
Run Code Online (Sandbox Code Playgroud)
在app/src文件夹中,是manifest.webmanifest:
{
"name": "My App",
"short_name": "My App",
"theme_color": "#1976d2",
"background_color": "#fafafa",
"display": "standalone",
"scope": "./",
"start_url": "./",
"icons": [
{
"src": "assets/icons/icon-72x72.png",
"sizes": "72x72",
"type": "image/png"
},
{ …
Run Code Online (Sandbox Code Playgroud) amazon-web-services progressive-web-apps angular aws-amplify