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

前端之家收集整理的这篇文章主要介绍了JavaScript – 通过Redux和Redux路由器处理用户身份验证前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道人们通常如何使用redux处理用户验证?我正在使用Redux路由器,我有一个后端rails API,通过auth令牌处理用户身份验证.

用户以表单的形式提交签名时,api将返回auth令牌以用于后续请求.最初我刚刚将该认证令牌存储在单一状态树中,并且每次调度需要进行需要用户认证的API请求的操作时,我使用(dispatch,getState)来获取该认证令牌,然后将其包含在API中请求.所以:getState().currentUser.auth_token.

我不知道我是否以正确的方式接近这个.有些人使用localStorage与Redux进行用户身份验证来模拟服务器端会话吗?那么每当一个API请求被发出时,我只是检查本地存储的auth令牌,如果它在那里用户登录

我最后做的是使用js-cookies,并在用户认证时做了一个Cookie.set.我的根< App />组件然后具有一个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软件包.

很想知道我是不是意外地打开自己进行某种身份验证攻击,或者如果有更好的方法来处理这个流程!

解决方法

I was wondering how people normally handle User Authentication with redux?

我在这么多项目中处于这种状况,我结束了一个解决方案,每次我需要在我的React / Redux应用程序中处理身份验证时,不会让我发汗.

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

解决方

我注意到,在单页应用程序(SPA)中,认证机制在客户端被处理,就像你所说的那样,检查用户是否有令牌,使用服务器进行验证,然后“重定向”到相关的路由库在这一点上,现在不管你使用的是React / Redux,Angular,Ember还是Backbone,它总是会令人讨厌.

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

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

猜你在找的JavaScript相关文章