当前位置:  开发笔记 > 编程语言 > 正文

通过Redux和Redux路由器处理用户身份验证

如何解决《通过Redux和Redux路由器处理用户身份验证》经验,为你挑选了1个好方法。

我想知道人们通常如何使用redux处理用户身份验证?我正在使用Redux路由器,我有一个后端rails API,通过身份验证令牌处理用户身份验证.

当用户提交登录表单时,api将返回auth令牌以用于后续请求.最初我只是将auth令牌存储在单个状态树中,每次我调度需要进行需要用户身份验证的API请求的操作时,我都使用(dispatch,getState)获取该身份验证令牌,然后将其包含在API中请求.所以:getState().currentUser.auth_token.

我不确定我是否以正确的方式接近这个.有些人使用localStorage和Redux进行用户身份验证来模拟服务器端会话吗?然后,每次发出API请求时,我只需检查本地存储以获取身份验证令牌,如果在那里用户已登录?

我最终做的是使用js-cookies并在用户进行身份验证时执行Cookie.set.然后,我的根组件有一个componentDidMount,它调度initAuth()操作,该操作检查当前Cookie以查看它是否仍然有效.如果是这样,它会保持用户登录,否则会将身份验证减速器重置为其defaultState.

以下是使用用户身份验证的repo链接:https://github.com/SpencerCDixon/Kira/blob/master/client/actions/AuthActions.js

任何提示或资源将不胜感激.到目前为止,我已经查看了真实世界的示例和React Router auth示例.React Router示例似乎使用localStorage,这就是为什么我很好奇它是否是正确的路径.我注意到还有一个Redux Localstorage npm包.

很想知道我是否因为意外地打开某种身份验证攻击或者有更好的方法来处理这个流程!



1> udidu..:

我想知道人们通常如何使用redux处理用户身份验证?

在这么多项目中,我处于这种状况,最后我找到了一个解决方案,每次我需要在React/Redux应用程序中处理身份验证时,这些解决方案都不会让我感到厌烦.

在我的项目中,我使用的是Node.js,但这并没有改变任何东西,你可以使用任何服务器端技术.

解决方案

我注意到在单页面应用程序(SPA)中,身份验证机制在客户端处理,就像你说的那样,检查用户是否有令牌,用服务器验证它,然后"重定向"到相关的路由库就此而言,现在不管你的SPA是使用React/Redux,Angular,Ember还是Backbone,它都会变得很讨厌.

所以我将身份验证(注册/登录)进程与主应用程序分开,因此当用户第一次启动我的应用程序时,服务器会检查tokencookie,如果用户有该请求的cookie,则服务器验证此令牌,如果它是有效的,将客户端重定向到主应用程序页面(例如index.html),如果令牌无效或不存在,服务器会将客户端重定向到登录/注册页面(登录) html的/ signup.html).

login.html页面不是主应用程序(index.html中的一个)的一部分,事实上,它具有不同的代码库(更轻,代码更少,因此页面可以更快地加载),当用户尝试登录时,服务器验证了该login.html页面中的用户名和密码,如果它是有效的凭据,则服务器token为该用户设置一个cookie并将其重定向到可以加载应用程序代码的主应用程序页面(index.html)因为如果用户能够加载此页面(index.html),则无需处理身份验证,这意味着他必须拥有有效的令牌.


如果我希望我的应用程序知道用户的登录状态怎么办?即使用户未经过身份验证,应用程序也应该正常工作(全部或部分).
推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有