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

Posted

技术标签:

【中文标题】没有当前用户 - getServerSideProps Next JS 和 AWS Amplify【英文标题】:No current user - getServerSideProps Next JS and AWS Amplify 【发布时间】:2021-05-04 15:40:09 【问题描述】:

我正在尝试使用 AWS Amplify 和 Next JS 在 getServerSideProps 的服务器端发出经过用户身份验证的 GraphQL 请求。

我的 AWS 数据库中的用户只有作为文档的所有者才能访问数据。

我从中得到的错误是 "No current user"...(正在登录服务器)。 问题是,我需要 getServerSideProps 中可用的用户,这样我才能使经过身份验证的请求发生。

这是我目前拥有的代码

index.tsx:

import Amplify,  API, graphqlOperation, withs-s-rContext  from "aws-amplify";
import config from "../aws-exports";
Amplify.configure( ...config, s-s-r: true );

function Index( bankAccounts :  bankAccounts: BankAccount[] ) 

  return (
    ...stuff...
  );

index.tsx (getServerSideProps):

export const getServerSideProps: GetServerSideProps = async (context) => 
  const  API  = withs-s-rContext(context);

  const result = (await API.graphql(
    query: listBankAccounts,
  )) as 
    data: ListBankAccountsQuery;
    errors: any[];
  ;

  if (!result.errors) 
    return 
      props: 
        bankAccounts: result.data.listBankAccounts.items,
      ,
    ;
  

  return 
    props: 
      bankAccounts: [],
    ,
  ;
;

如果您能提供任何帮助或建议,我将不胜感激!

【问题讨论】:

我也遇到了这个问题。你能解决问题吗?提供authMode 的解决方案对我不起作用 【参考方案1】:

看起来您可能只需要在您的 API.graphql 调用中也传递 authMode

在s-s-r Support for AWS Amplify 博客文章中,在标题为在getServerSideProps 中发出经过身份验证的API 请求 的部分中,您将看到如下所示的代码示例(注意下面添加的authMode ,我在上面的代码示例中没有看到):

  const  API  = withs-s-rContext(context)
  let movieData
  try 
    movieData = await API.graphql(
      query: listMovies,
      authMode: "AMAZON_COGNITO_USER_POOLS"
    );
    console.log('movieData: ', movieData)
   catch (err) 
    console.log("error fetching movies: ", err)
  
  return 
    props: 
      movies: movieData ? movieData.data.listMovies.items : null
    
  
```

【讨论】:

以上是关于没有当前用户 - getServerSideProps Next JS 和 AWS Amplify的主要内容,如果未能解决你的问题,请参考以下文章

在swift 4中没有让用户当前位置

流浪者没有启动。创建 VM 的用户与当前用户不匹配

Cognito Auth.sendCustomChallengeAnswer 给出“AuthClass - 无法获取登录用户没有当前用户”

有没有办法让当前的 Twitter 登录用户已经关注或取消关注我? [关闭]

在没有 AuthGuard 的路由上获取 nestjs 中的当前用户

MS Access 有没有办法获取当前的 Active Directory 用户?