Reactjs NextJS-已验证和未验证用户的静态页面

Reactjs NextJS-已验证和未验证用户的静态页面,reactjs,next.js,Reactjs,Next.js,我正在创建一个react应用程序,我正在考虑使用NextJS进行更好的SEO。我想知道是否有办法根据用户的登录状态(是否登录)返回不同的静态页面 如果用户经过身份验证:返回带有微调器/骨架的静态页面,将静态页面重新用于来自身份验证用户的其他请求,并从客户端获取后端数据 如果用户未经过身份验证(如爬虫):返回一个包含已获取数据的静态页面,并将该静态页面重新用于未经身份验证的用户的其他请求 (我想为用户(和搜索引擎)和服务器(更少的数据库查询)生成静态页面以获得更好的性能) 我想对相同的url执

我正在创建一个react应用程序,我正在考虑使用NextJS进行更好的SEO。我想知道是否有办法根据用户的登录状态(是否登录)返回不同的静态页面

  • 如果用户经过身份验证:返回带有微调器/骨架的静态页面,将静态页面重新用于来自身份验证用户的其他请求,并从客户端获取后端数据

  • 如果用户未经过身份验证(如爬虫):返回一个包含已获取数据的静态页面,并将该静态页面重新用于未经身份验证的用户的其他请求

  • (我想为用户(和搜索引擎)和服务器(更少的数据库查询)生成静态页面以获得更好的性能)

    我想对相同的url执行上述操作

    对于其中的一种情况,我似乎已经可以通过为重新验证选择一个合理的值(如1分钟或5分钟),并对具有不同ID(如
    /posts/[postId]
    )的页面使用
    fallback=true
    ),以及
    getStaticProps()

    如果我在url路径中使用slug来标识用户是否经过身份验证(例如:
    /[authslaug]/posts/[postd]
    ,如
    /authenticated/posts/1
    /unauthenticated/posts/1
    ,我可能能够处理这两种情况

    不幸的是,我还没有找到一种方法来实现上述场景,即使用相同的url动态生成静态页面(而不是SSR,它在每个请求时生成不同的页面)

    如果我在中间使用反向代理,代理可以根据用户的认证状态向NExjs服务器请求,在NExjs服务器中不需要更改用户的URL就可以走到不同的路径,但是如果可能的话,我希望避免这样的方法。(这可能会导致从客户端访问站点内部的路由出现问题)


    有没有一种方法可以像我上面解释的那样实现我想要的?

    我会回答“没有”,但我只有99%而且不是100%确定,因此我现在就不说了。静态页面不能基于(例如)用户状态,你似乎已经意识到了。你的解决方案听起来像是使用自定义服务器作为中间件来超越路由,但拥有一个自定义服务器.js也会扼杀自动SSG。也许你可以手动将自己的SSG构建到自定义服务器中。我不知道这需要付出多少努力,但也许你可以利用它的最新功能:。感谢您的回答。我正在考虑让前面的nginx服务器根据用户cookie(如果存在或不存在)更改NextJS服务器的url,这样我就可以实现两种情况下的SSG(我会为此创建不同的页面,但页面最终将成为同一个组件)。我只是不知道它是否适用于从客户端访问的路由,OOTB解决方案会更好,但这似乎不可能。相关:也没有答案。我会回答“否”,但我只有99%和100%的把握,因此我暂时不提。静态页面无法基于(例如)进行处理用户状态,你似乎已经意识到了。你的解决方案听起来像是使用自定义服务器作为中间件来超越路由,但拥有一个自定义服务器.js也会扼杀自动SSG。也许你可以手动将自己的SSG构建到自定义服务器中。我不知道这需要付出多少努力,但也许你可以利用它的最新功能:。感谢您的回答。我正在考虑让前面的nginx服务器根据用户cookie(如果存在或不存在)更改NextJS服务器的url,这样我就可以实现两种情况下的SSG(我会为此创建不同的页面,但页面最终将成为同一个组件).我只是不知道它是否适用于从客户端访问的路由,OOTB解决方案会更好,但似乎不可能实现ATM。相关:也没有答案。