【发布时间】:2020-10-29 19:57:37
【问题描述】:
我想保护我的 express 应用程序中的一些端点,如果我的应用程序变成一个大应用程序,我想创建一些易于管理的东西......现在我正在做这样的事情:
setProtected(router) {
const self = this;
router.use(this.auth);
...
}
setPublic(router) {
const self = this;
...
}
getRouter() {
const router = express.Router();
this.setPublic(router);
this.setProtected(router);
return router;
}
与:
auth(req, res, next) {
if(req.isAuthenticated()) {
console.log('req.isAuthenticated()', req.isAuthenticated());
return next();
}
return res.send(401);
}
在这种情况下的问题是难以维护,并且如果我的 publicRoute 中有 /:id 并且例如 /my-items 在我的受保护路由中有 /my-items 时我没有登录并且我尝试到达 /my-items 我得到 /:id 的代码。
另一个想法是创建一个包含我所有 url 列表的 json,其中包含相同的信息,例如受保护/不受保护和最终角色,然后使用以下内容更改身份验证:
import urls from './urls';
auth(req, res, next) {
if (urls[req.url] == 'public') {
return next()
}
else if (urls[req.url] == 'protected' && req.isAuthenticated()) {
return next();
}
return res.send(401);
}
什么方法最适合你?
【问题讨论】:
标签: node.js express authentication