首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Next.js withPageAuthRequired和getStaticProps

Next.js withPageAuthRequired和getStaticProps
EN

Stack Overflow用户
提问于 2021-06-30 20:38:43
回答 1查看 4K关注 0票数 2

根据文档@auth0/nextjs-auth0,我们可以使用withPageAuthRequired来触发登录页面所需的页面登录屏幕。

短变体:export const getServerSideProps = withPageAuthRequired();

但是,如果我需要在构建时使用getStaticProps对不能与getServerSideProps一起使用的预呈现页面,该怎么办?是否有任何方法在请求时使用withPageAuthRequired静态生成的页面?

现在,我正在使用客户端的双重检查进行检查。但我宁愿使用服务器端检查,就像我在其他页面上使用的那样。

在客户端也有使用withPageAuthRequired的方法。这个不适合我使用。

EN

Stack Overflow用户

发布于 2021-07-16 04:42:05

由于getStaticProps()用于构建静态页面(即,在请求时没有服务器端逻辑/呈现),因此必须在客户端进行自动检查和重定向登录。

您可以通过在静态资源前面添加一个代理(例如,使用Lambda@Edge)来获得您想要的行为,尽管我对这种方法还不太熟悉。

从您的问题看来,您似乎已经熟悉了如何在客户端进行检查/重定向,但为了将来遇到此帖子的其他人的利益:

要在客户端获取用户信息,请向应用程序中添加一个<UserProvider>,并在客户端组件中调用useUser()钩子。

请参阅文档

pages/_app.js组件包装您的UserProvider组件: // pages/_app.js导入响应于“function”;从“@auth0/nextjs-auth0”导入{ UserProvider };导出默认函数App({ Component,pageProps }) { import ( ); 现在,您可以通过检查是否定义了由user钩子返回的useUser()对象来确定用户是否经过身份验证。还可以从Next.js应用程序的前端层登录或注销用户,方法是将用户重定向到适当的自动生成路由: // pages/index.js从‘@auth0/nextjs-auth0’导入{ useUser };导出默认函数索引(){ const { user,isLoading }= useUser();if (isLoading)返回加载.;if (错误)返回{error.message};if (用户){error.message}返回(欢迎{user.name}!}返回登录;} 有关其他全面示例,请参见EXAMPLES.md文档。

在客户端使用withPageAuthRequired()的另一种方法:

代码语言:javascript
运行
复制
import React from 'react';
import { withPageAuthRequired } from '@auth0/nextjs-auth0';

import Layout from '../components/layout';

export default withPageAuthRequired(function Profile({ user }) {
  return (
    <Layout>
      <h1>Profile</h1>
      <h4>Profile</h4>
      <pre data-testid="profile">{JSON.stringify(user, null, 2)}</pre>
    </Layout>
  );
});

其他例子链接。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68201349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档