【问题标题】:AWS Making a User Store based on UserpoolsAWS 基于用户池创建用户存储
【发布时间】:2021-10-26 15:31:29
【问题描述】:

我正在创建一个 Android 和 iOS 应用程序,并且我正在实施的许多网络功能都利用 AWS Amplify。我有一个身份验证系统,它通过 AWS Cognito 和 AWS 用户池设置和验证用户信息。但是,我还尝试为每个用户存储更多属性,而不仅仅是用户名、电子邮件、电话号码和密码。我还想存储分数、登录天数等内容。一些 AWS 服务(例如 S3)似乎允许我创建具有这些属性的数据库,但似乎每个人都可以访问它们,我需要一个非常安全系统,其中唯一可以访问这些用户属性的人是用户自己和我作为管理员。

在 AWS 中实现此功能并与 Android/iOS 应用程序集成的最佳方式是什么?谢谢

【问题讨论】:

    标签: amazon-web-services amazon-cognito aws-amplify user-data


    【解决方案1】:

    我建议将 Rest API 或 GraphQL API 添加到您的 Amplify 后端。这将创建一个安全 API,该 API 将使用 Cognito 生成的 JWT 令牌进行身份验证。您的数据将存储在 DynamoDB 表中,这些表将通过 GraphQL 架构中的 @model 指令生成。

    创建 GraphQL API

    导航到 JavaScript、iOS 或 Android 项目的根目录并运行:

    amplify add api
    

    选择以下选项:

    选择 GraphQL

    • 当询问您是否有架构时,说没有
    • 选择默认样本之一;您可以稍后更改此设置
    • 选择编辑架构,它将在您的编辑器中打开新的 schema.graphql

    用于跟踪用户分数和自上次登录后天数的简单模型可能如下所示:

    type UserData @model {
      id: ID!
      cognitoUserId: String!
      score: Float!
      lastLoggedInAt: AWSDate!
    }
    

    有关构建 Amplify GraphQL API 的更多详细信息,请点击此处https://docs.amplify.aws/cli/graphql-transformer/overview/

    创建 REST API

    按照向导创建新应用。完成向导运行后:

    amplify add api
    

    选择以下选项:

    请选择以下服务之一:REST

    • 为您的资源提供一个友好名称以用作此项目中的标签 - 类别:itemsApi
    • 提供路径(例如,/book/{isbn}):/items

    这将是 API Gateway 中 /items 路径的配置:

    /                        
     |_ /items               Main resource. Eg: /items
        ANY                    Includes methods: DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT
        OPTIONS                Allow pre-flight requests in CORS by browser
        |_ /{proxy+}         Proxy resource. Eg: /items/, /items/id, items/object/{id}
           ANY                  Includes methods: DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT
           OPTIONS              Allow pre-flight requests in CORS by browser
    

    更多关于创建 Amplify REST API here

    【讨论】:

    • 感谢所有这些,到目前为止它非常有帮助!目前,我仍然有点困惑,但是如何检查只有用户才能访问他自己的数据?我在 AWS GraphQL 页面上看到的所有内容都将用户池分组,因此基本上,任何拥有用户池的人都可以访问其他数据。我怎样才能做到只有我作为管理员和用户自己才能访问他们自己的独立数据?
    猜你喜欢
    • 2017-12-03
    • 2019-09-04
    • 2018-08-23
    • 1970-01-01
    • 2021-08-13
    • 2017-02-10
    • 2017-08-25
    • 2019-09-13
    • 1970-01-01
    相关资源
    最近更新 更多