Next.js + Redux身份验证和重定向

用户名

我开始构建next.js应用程序,并且正在使用redux。我在next.js中,特别是在redux中,阅读了很多有关身份验证的内容。假设我有一个/ login页面和/ private页面。而且我的redux存储包含isAuthenticated状态。因此,正如我所看到的,我需要考虑以下情形:

  1. 通过地址栏(SSR)导航到/ private时,我应该重定向到/ login。

  2. 当已经在/ private中并且isAuthenticated更改为false时。

  3. 在/ login中成功登录后,更新isAuthenticated状态并重定向到/ private页面。

我是否错过了一些重要的可能方案(UX和安全方面)?

关于这些情况,我对这里的专家有几个问题:

  1. 对于场景1,我在getinitialprops中实现了身份验证检查(仅当ctx.req不为null时)。如果用户未通过身份验证,我将302响应将其重定向到/ login页面。那样行吗?

  2. 关于方案2,我应该在哪里实现此逻辑?最佳做法是什么?我可以想到在getinitialprops,render()函数,componentDidUpdate中实现检查...

  3. 我应该在调用redux操作(身份验证)之后还是在redux操作中重定向?

  4. 我应该从redux操作内部还是在组件的handle函数中触发登录请求,并成功调用redux操作。

  5. 重定向时,我应该使用Router.push还是Router.replace?

请帮助我一劳永逸地了解最佳做法。

埃德里安

这基于经验:

  1. 对于场景1,我在getinitialprops中实现了身份验证检查(仅当ctx.req不为null时)。如果用户未通过身份验证,我将302响应将其重定向到/ login页面。那样行吗?

是的,没关系。它做了它需要做的。

  1. 关于方案2,我应该在哪里实现此逻辑?最佳做法是什么?我可以想到在getinitialprops,render()函数,componentDidUpdate中实现检查...

绝对是getInitialProps。我们所做的是为SSR和CSR组件都可以使用的助手。助手所做的是,它访问两个实例的Cookie,这样,身份验证状态是一致的。可能会有更好的方法,但这就是我们实施的方法。

  1. 我应该在调用redux操作(身份验证)之后还是在redux操作中重定向?

取决于您团队的协议。对我们来说,所有重定向等副作用都可以在Redux Sagas内部进行。

  1. 我应该从redux操作内部还是在组件的handle函数中触发登录请求,并成功调用redux操作。

我建议您使用Sagas,因为它更加清洁,并为您提供了另一层层次来保持您的所有副作用。但是,对于您而言,我建议您使动作保持清洁,并做它需要做的事情:更改状态。

  1. 重定向时,我应该使用Router.push还是Router.replace?

我建议Router.push使用replace将覆盖路由栈的顶部,并且在回击或不回击时可能导致不良影响。如果您担心回弹时会发生什么,这将取决于您的要求。

不要使事情过于复杂。在实际使事情工作之后,使它工作并找到更好的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Next.js和Redux进行身份验证

来自分类Dev

Next.js身份验证策略

来自分类Dev

仅在Koa.js中重定向未经身份验证的用户以查找丢失的资源?

来自分类Dev

身份验证后,Passport.js重定向到“找到302”

来自分类Dev

Passport.js 在对用户进行身份验证后不重定向

来自分类Dev

Node.js和PassportJs:如果身份验证失败,则不会在passport.authenticate之后重定向中间件

来自分类Dev

使用Node.js和Passport进行身份验证后,如何将用户重定向至带有其ID的主页?

来自分类Dev

身份验证后重定向到Passport.js中的上一页(不重复)Node.js

来自分类Dev

Laravel 和 Vue js 身份验证

来自分类Dev

Next.js全局重定向到小写网址

来自分类Dev

Twitter身份验证可以在本地运行,但不能在Vercel服务器中运行(Next.JS)

来自分类Dev

使用Passport.js验证角色和身份验证

来自分类Dev

用户仍在对会话进行身份验证时单击“后退”按钮,并将其重定向到node.js中的登录页面

来自分类Dev

奇怪的.net MVC表单身份验证,当客户端请求css / js文件时,它将重定向到登录

来自分类Dev

如何重定向Devise的注册和身份验证失败?

来自分类Dev

Passport.js用户登录和身份验证

来自分类Dev

ADAL.js和Yammer身份验证

来自分类Dev

node.js、firebase 和身份验证

来自分类Dev

Koa.js验证密码(Jade)渲染和重定向

来自分类Dev

如何在React JS或React-Redux JS中对CloudKit JS进行身份验证

来自分类Dev

Next.js getServerSideProps重定向ERR_HTTP_HEADERS_SENT错误

来自分类Dev

动态路由可防止重定向到Next.js中的404页面

来自分类Dev

Laravel身份验证重定向失败

来自分类Dev

身份验证重定向失败

来自分类Dev

身份验证的URL重定向

来自分类Dev

CodeIgniter社区身份验证重定向

来自分类Dev

Laravel 身份验证无法重定向

来自分类Dev

使用angular,node.js和身份提供者的SAML身份验证

来自分类Dev

sockiet.ion Passport.js,express.js和身份验证标头

Related 相关文章

  1. 1

    使用Next.js和Redux进行身份验证

  2. 2

    Next.js身份验证策略

  3. 3

    仅在Koa.js中重定向未经身份验证的用户以查找丢失的资源?

  4. 4

    身份验证后,Passport.js重定向到“找到302”

  5. 5

    Passport.js 在对用户进行身份验证后不重定向

  6. 6

    Node.js和PassportJs:如果身份验证失败,则不会在passport.authenticate之后重定向中间件

  7. 7

    使用Node.js和Passport进行身份验证后,如何将用户重定向至带有其ID的主页?

  8. 8

    身份验证后重定向到Passport.js中的上一页(不重复)Node.js

  9. 9

    Laravel 和 Vue js 身份验证

  10. 10

    Next.js全局重定向到小写网址

  11. 11

    Twitter身份验证可以在本地运行,但不能在Vercel服务器中运行(Next.JS)

  12. 12

    使用Passport.js验证角色和身份验证

  13. 13

    用户仍在对会话进行身份验证时单击“后退”按钮,并将其重定向到node.js中的登录页面

  14. 14

    奇怪的.net MVC表单身份验证,当客户端请求css / js文件时,它将重定向到登录

  15. 15

    如何重定向Devise的注册和身份验证失败?

  16. 16

    Passport.js用户登录和身份验证

  17. 17

    ADAL.js和Yammer身份验证

  18. 18

    node.js、firebase 和身份验证

  19. 19

    Koa.js验证密码(Jade)渲染和重定向

  20. 20

    如何在React JS或React-Redux JS中对CloudKit JS进行身份验证

  21. 21

    Next.js getServerSideProps重定向ERR_HTTP_HEADERS_SENT错误

  22. 22

    动态路由可防止重定向到Next.js中的404页面

  23. 23

    Laravel身份验证重定向失败

  24. 24

    身份验证重定向失败

  25. 25

    身份验证的URL重定向

  26. 26

    CodeIgniter社区身份验证重定向

  27. 27

    Laravel 身份验证无法重定向

  28. 28

    使用angular,node.js和身份提供者的SAML身份验证

  29. 29

    sockiet.ion Passport.js,express.js和身份验证标头

热门标签

归档