NextJS 中的持久身份验证与 Redux

时间:2020-12-28 05:18:59

标签: reactjs authentication redux passport.js next.js

我在完成我正在进行的项目的身份验证时遇到了一些问题。 这是我的堆栈:

  • React 和 NextJS
  • 还原
  • MongoDB
  • 快递
  • 护照

我遇到的问题是登录工作正常,但我不确定在哪里更新我的 Redux 存储,以便我可以从代码库中的任何组件(不仅仅是 NextJS 页面)访问经过身份验证的用户,因为我知道我可以只使用 getInitialProps 并为此访问 ctx.req 对象。

例如,当我想从 Layout 组件访问用户对象时,就会出现问题,就像这样。

renderNav() {
    return (
        <div className={`siteNav${this.getAppendValue(this.state.siteNavTheme)}`}>
            <div className="siteNavContainer">
                <a id="siteLogo" href="/"><img src={`/assets/images/logo-${this.state.siteNavTheme == 'dark' ? 'white' : 'black'}.png`}/></a>
                <a className="siteNavLink" onClick={() => this.scrollIntoView(document.getElementById('features'))}>Features</a>
                <a className="siteNavLink" onClick={() => this.scrollIntoView(document.getElementById('pricing'))}>Pricing</a>
                <a className="siteNavLink">Documentation</a>
                <a className="siteNavLink">Blog</a>
                
                <Button href="/dashboard" className="blurple" type="anchor">{this.props.auth.authenticated ? 'Go to dashboard' : 'Sign in'}</Button>
            </div>
        </div>
    );
}

this.props.auth.authenticated 指的是我的 Redux 状态,但即使在我成功登录应用程序后也是假的。 此代码位于我 Next 应用程序中不是页面的组件内,因此 getInitialProps 不是一个选项(据我所知)。

我只想能够从 Redux 中访问用户变量以及经过身份验证的布尔值,以便它能够在任何组件中使用,只要它连接到我的状态。

如果有人可以提供帮助,非常不胜感激。

另外,我很抱歉,因为这是我在这里的第一个问题。 因此,如果您需要任何其他信息,请告诉我。

旁注:如果有任何其他最佳实践比我当前的堆栈更有效,请也​​向我提出建议。

谢谢!

0 个答案:

没有答案