没有当前用户 AWS Amplify 身份验证错误 - 无需登录即可访问

Posted

技术标签:

【中文标题】没有当前用户 AWS Amplify 身份验证错误 - 无需登录即可访问【英文标题】:No current User AWS Amplify Authentication Error - need access without login 【发布时间】:2020-05-27 11:37:45 【问题描述】:

目标

使用 AWS amplify 启动基于 React 的订单。由于可能是身份验证问题,目前无法将条目提交到数据库。

我有一个被多个前端使用的 AWS Amplify 后端 - 一个库存管理系统和一个新订单。

库存管理系统设置了身份验证(Cognito 用户池,使用 withAuthenticator React 组件),需要用户登录才能访问应用程序。 成功完成后,它允许用户更改数据库(dynamoDB,使用 GraphQl),从数据库中获取数据等。

订单表单不需要用户登录,但我仍然需要将表单条目提交到数据库。当使用 Amplify 控制台托管表单并提交表单条目时,我收到此错误:

Uncaught (in promise) No current user

以前有没有其他人处理过这个问题或类似的事情?到目前为止,我还没有找到任何有用的答案来解决这个问题。

感谢您的帮助!

【问题讨论】:

我也遇到了同样的问题。你找到解决办法了吗? 【参考方案1】:

当您使用amplify api add 创建 API 时,您必须启用用户身份验证作为 API 的选项之一。您需要向您的 React 应用程序添加身份验证,然后以注册用户身份登录,然后再发出 API 请求。最快的方法是使用预构建的 react UI 框架。

使用 yarn 或 npm 安装 UI 框架:

yarn add aws-amplify @aws-amplify/ui-react

npm i aws-amplify @aws-amplify/ui-react

然后

import React from "react";
import Amplify from "aws-amplify";
import AmplifyAuthenticator, AmplifySignOut from "@aws-amplify/ui-react";
import awsconfig from "./aws-exports";

Amplify.configure(awsconfig);

const App = () => (
  <AmplifyAuthenticator>
    <div>
      My App
      <AmplifySignOut />
    </div>
  </AmplifyAuthenticator>
);

请参阅文档中的步骤和更多详细信息:https://docs.amplify.aws/ui/auth/authenticator/q/framework/react#installation

【讨论】:

以上是关于没有当前用户 AWS Amplify 身份验证错误 - 无需登录即可访问的主要内容,如果未能解决你的问题,请参考以下文章

没有当前用户 - getServerSideProps Next JS 和 AWS Amplify

Android 应用程序中的 AWS Amplify Cognito 身份验证错误

AWS Amplify 'currentUserCredentials()' 返回意外的身份验证值,错误?

删除 AWS Amplify 添加的用户池

AWS Amplify with GraphQL - 按不同类型的用户定义身份验证规则

使用 AWS Amplify 身份验证模块禁用的用户池属性