node.js - Node Express 身份验证/授权
问题描述
我只是一个开始,使用 node/express 我有点问题。我已经使用 node js express 和 mongo db 构建了一个 todo 应用程序,它实际上有一个登录/注册表单...即,你可以在访问 todo 之前注册和登录 (/register) 和 (/login)应用程序(/todoapp)。我的问题是,如果用户 A 使用他的电子邮件和密码登录,输入一些待办事项并注销,稍后用户 B 也可以使用他自己的不同电子邮件和密码登录,他可以看到用户 A 的待办事项。但是我希望它有所不同,用户A应该只能看到他自己的待办事项,用户B也应该能够看到他自己的待办事项,请问我该怎么做?
请我的算法在下面 - 用户注册 (/register) - 用户被重定向到 (/login) ***成功登录并进入 (/todos)
这完美地工作并将所有登录的用户发送到相同的(/待办事项)
解决方案
通常,当用户成功登录时,您需要将用户 _id 存储在会话或 cookie 中(在客户端),然后当用户首先发出 get/post 请求时,您检查他的 seesion/cookie 中的 _id 是否与 _id 匹配在数据库中并仅将具有他的_id的项目(属于用户的项目)发回给用户。您可以在用户登录时注册会话,但请记住您必须防止 csrf。
您也可以为此使用 JWT。
我会建议你找到关于 JWT 的好教程或使用 session 和 csrf 保护进行授权。
这是一个大主题,观看好视频或阅读好文章比从这里复制粘贴代码更好。
推荐阅读
- java - 任何人都知道我在执行这个java代码时做错了什么?
- assembly - 如何在 avr 汇编中将 32 位数除以 16 位数?
- javascript - BMR 计算器 React Native
- azureml - 在 azureml 中获取本地工作区
- web - 如何将网站服务器与 Web 应用程序服务器分开?
- javascript - 尝试在反应中添加组件到路由时出错
- ruby-on-rails - 新引用将不起作用,因为旧记录 Rails Activerecord Postgres
- python-3.x - 使用 Selenium 返回href
- validation - 2 JSON Schema 问题,是否需要 type 关键字以及 Core 和 Validation 之间的区别
- html - 如何使用 CSS 更改 ContactForm7 for WordPress 复选框的默认边框颜色和默认高度?