javascript - 选项卡打开时持续的 session 的身份验证逻辑

标签 javascript node.js session express reactjs

假设您正在开发一个通过第 3 方 API 执行身份验证的前端应用程序。成功的身份验证返回一个 json 网络 token 。

当用户在网站上处于事件状态时(即不关闭选项卡或浏览器)存储此类 token 并为用户创建某种 session 的最佳做法是什么,但是刷新/重新加载页面不应破坏此类 session 。

还有,这个session怎么用来保护路由呢?我正在使用由 react/redux/node/express 和其他一些库组成的堆栈。我相信我可以在我的 react-router 中执行某些检查,但是在 express 端执行这些不是更好吗?

最佳答案

您可以将 token 存储在 localStoragesessionStorage 中,并将其包含在每个 API 请求中。

Local storage超过选项卡,它会存储在那里,直到您明确地从中删除,所以刷新页面不会有问题。即使关闭标签然后再回来也不会。

Session storage允许您存储数据。页面刷新很好,但选项卡关闭不是,这更接近您想要的行为。

至于保护路由,服务器显然应该检查对所有 protected API 路由的请求的 token 。

在浏览器端,如果用户尝试访问 protected 路由但 token 不存在(或无效),您可能希望显示登录表单。

使用 react-router,您可以通过 onEnter hooks 像示例中的官方 repo 那样进行操作:https://github.com/reactjs/react-router/blob/master/examples/auth-flow/app.js

另一种方法是创建两个顶级组件,一个用于 protected 路由,一个用于公共(public)路由(如登陆页面或登录/注册表单)。然后, protected 处理程序将在 componentWillMount 中检查是否有 token :

- PublicHandler 
  + SignIn
  + SignUp
  + Index

- ProtectedHandler
  + Dashboard
  + MoneyWithdrawal

关于javascript - 选项卡打开时持续的 session 的身份验证逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38075542/

相关文章:

javascript - 使用辅助帐户在 Gmail 中合并邮件

php - 我不确定我的 JSON 格式是否正确以访问它

node.js - 在expressjs中检测IE,但无法获取静态文件

javascript - 这是使用 nodejs 的好场景吗?

javascript - 在express js中验证图片大小后才上传图片

javascript - jqgrid对html单元格元素的自定义搜索

javascript - Karma js 不会提供图片文件

php - 在 PHP 中编辑另一个用户 session

javascript - 调用 React 渲染的 api 时 $_SESSION 为空

php - 将多个变量传递给url中的另一个页面