假设我有 3 个模型:管理员、用户、产品(我正在使用模型类)
只有管理员可以添加、更新、删除产品,用户只能获取产品,所以我为相应的路由注册了一个 ACL 中间件。
现在在我的 ACL 中间件中,我想授权用户,如果他们是ADMIN,我将调用next()
方法,否则,我将使用401
.
我发现使用 JavaScript 的运算符很容易进行检查instanceof
:
const user = await auth.authenticate()
if (user instanceof Admin) {
await next()
} else {
throw UnAuthorizedUserException
}
await auth.authenticate()
返回发送请求的当前用户,无论是用户还是管理员
但是,我不确定这是否是区分黑白管理员和用户的最安全方法。
现在我的问题是,我做得对吗?哪种方法比我正在做的更好?
注意(如果有帮助):我使用的是 Adonis.js v5、TypeScript 和 Lucid 模型