Javascript 设置访问权限的正确方法?
我正在创建一个用户管理系统-但是我现在发现自己正在检查每个路由器上的用户类型Javascript 设置访问权限的正确方法?,javascript,node.js,express,Javascript,Node.js,Express,我正在创建一个用户管理系统-但是我现在发现自己正在检查每个路由器上的用户类型 router.get('/admin/settings', (req, res) => { if(admin) { //Proceed. } } router.get('/admin/users', (req, res) => { if(admin) { //Proceed. } } 有更好的方法吗?我不能就这样定一条路线吗 router.
router.get('/admin/settings', (req, res) => {
if(admin) {
//Proceed.
}
}
router.get('/admin/users', (req, res) => {
if(admin) {
//Proceed.
}
}
有更好的方法吗?我不能就这样定一条路线吗
router.get('/admin*', (req, res) => {
if(!admin) {
res.status(404).send('Not found')
}
}
(我尝试过但没有成功,感觉与其他路线冲突)
同样,在一个类似的注释上。我应该如何处理拒绝用户访问脚本的问题?我要发404还是403 您可以使用Express中间件功能:
router.use(function(req, res, next) {
if(admin) {
return next();
}
// We fail closed
return res.status(403).send('Forbidden');
});
// This won't get called if the middleware doesn't call next()
router.get('/admin/settings', (req, res) => {
// Do stuff
}
这里,只有当用户是管理员时,我们才调用next()
,这允许调用继续。在此中间件之后添加的任何路由都将受到保护
同样,在一个类似的注释上。我应该如何处理拒绝用户访问脚本的问题
403是这里合适的代码,不过如果您希望对未经授权的客户端隐藏路由,也可以使用404。我建议。是404还是403?你有没有费心去查那些代码代表什么?404-找不到,403-禁止状态。我不明白你的意思,如果我拒绝一个脚本的post请求,我想我至少会发送一个回复,而不是什么都不做。我的意思是,我认为你根本懒得看。在这里,我将为您搜索。嗯?不,你为什么要使用它?@gforce301 401 Unauthorized通常用于客户端根本没有进行身份验证的情况。403是为用户已知但没有资源特权的情况而设计的。有一些模棱两可的地方,因为有些服务器确实会在401或403更合适的时候发送404。非常感谢!我要试试这个。使用404也可以吗?考虑到这是一个管理脚本——首先隐藏它存在的事实不是一个好主意吗?404完全可以使用。如果您想对未经身份验证的用户隐藏此路由存在的事实,我建议您这样做。