【问题标题】:Why aws-cognito-next getServerSideAuth returns null?为什么 aws-cognito-next getServerSideAuth 返回 null?
【发布时间】:2020-09-25 19:24:33
【问题描述】:

我正在使用 npm 模块 aws-cognito-next 为我的一个应用程序实施身份验证。那里的功能getServerSideAuth(context.req); 似乎没有按预期工作:

export async function getServerSideProps(context) {
    // getServerSideAuth will parse the cookie
    const initialAuth = getServerSideAuth(context.req);
    return { props: { initialAuth } };
}

然后在Home (/pages/home.js) 的同一页面中,我使用返回的initialAuth 如下:

const Register = ( {initialAuth} ) => {
    console.log("initialAuth is: " + util.inspect(initialAuth))
    const auth = useAuth(initialAuth);
    ...
    //other logic
    ...
}

但我输出为:initialAuth is: null。那么为什么没有从服务器端返回 initialAuth 呢?我在这里做错了什么?

【问题讨论】:

    标签: reactjs amazon-cognito next.js server-side-rendering aws-amplify


    【解决方案1】:

    getServerSideAuth 检查用户是否登录并返回可在useAuth 中使用的令牌。您可以检查null 并添加逻辑以将用户发送到登录/注销页面。

    const Register = ( {initialAuth} ) => {
      const auth = useAuth(initialAuth);
      const { login, logout } = useAuthFunctions();
    
      return (
        <React.Fragment>
          {auth ? (
            <button type="button" onClick={() => logout()}>
              sign out
            </button>
          ) : (
            <React.Fragment>
              <button type="button" onClick={() => login()}>
                sign in
              </button>
            </React.Fragment>
          )}
        </React.Fragment>
      );
    }
    

    有关useAUth 的更多信息,请参阅here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-18
      • 2021-08-05
      • 2022-12-26
      • 2016-12-28
      • 2015-11-25
      • 2015-07-04
      • 2019-09-29
      • 2015-02-25
      相关资源
      最近更新 更多