管理者、ユーザー、製品の 3 つのモデルがあるとします (モデル クラスを使用しています)。
管理者のみが製品の ADD、UPDATE、DELETE を実行でき、ユーザーは製品の GET のみを実行できるため、対応するルートの ACL ミドルウェアを登録しました。
今、私の ACL ミドルウェアで、ユーザーを承認したいと考えています。ユーザーがADMINの場合はメソッドを呼び出しますnext()
。それ以外の場合は、リクエストを拒否し401
ます。
instanceof
JavaScript の演算子を使用してチェックを行うのは簡単であることがわかりました。
const user = await auth.authenticate()
if (user instanceof Admin) {
await next()
} else {
throw UnAuthorizedUserException
}
await auth.authenticate()
ユーザーか管理者かにかかわらず、リクエストを送信している現在のユーザーを返します
ただし、これが b/w 管理者とユーザーを区別する最も安全な方法であるかどうかはわかりません。
今私の質問は、私はそれを正しくやっていますか?私がやっていることよりもどのアプローチが優れていますか?
注(役立つ場合):私はAdonis.js v5、TypeScript、およびLucidモデルを使用しています