【发布时间】:2021-08-21 00:08:01
【问题描述】:
在我的 NodeJs 应用程序中,我使用 jwt 来管理用户会话,在 jwt 令牌内我存储 user_role 和 user_id。这是我的路线:
routes.post('/manga/post', Authorize("Scan"), MangaMiddleware.valid_manga_store, MangaController.store);
在中间件 Authorize("Scan") 中,我使用“jwt.verify”验证 jwt 令牌,如果其有效,我将检查是否有具有令牌 ID 的活动用户以及他的权限是否允许他访问此路线,如果是这样,我使用 next()
在 MangaController.store 中我要保存一个新漫画,我需要在文档中保存发出请求的 user_id。
这就是我的意思,我已经在授权中间件中解码了令牌,但解码后的数据不会保留在中间件之外。要从 MangaController 访问 user_id,我必须再次验证令牌。
我认为我应该避免两次验证相同的令牌,因此在验证后的中间件授权中,我将 user_id(加密)保存在 req.auth 中,并在控制器中使用它之后,我设置了 req.auth = null。这样 user_id 会在 req.auth 中存储一小段时间。
req.auth = user_id //after encrypting
我的朋友告诉我,将解码后的数据存储在 req 参数中是个坏主意,但我不认为这很糟糕。
简而言之。 我需要验证令牌两次吗?还有其他方法可以检索此数据吗?在 req 参数中存储解码数据是不是很糟糕?非常感谢您的时间和帮助。
【问题讨论】:
标签: node.js express model-view-controller jwt middleware