[解決済み] Node.js + Express.js ユーザーパーミッションセキュリティモデル
2023-08-05 05:06:45
質問
2種類のユーザーが存在するアプリケーションがあります。ユーザーがどのようにログインするかによって、アプリケーションの異なる部分にアクセスできるようにしたいと思います。
ユーザーがアクセス権のないものを見ることができないようにするには、どのようにセキュリティモデルを実装すればよいでしょうか。
セキュリティを各ルートの実装の一部にするのでしょうか?問題は、リクエスト間でいくつかの重複したロジックを持つことになります。これをヘルパー関数に移動させることができますが、まだそれを呼び出すことを忘れないようにする必要があります。
セキュリティをグローバルな app.all() ルートハンドラの一部にするのでしょうか?問題は、各ルートを検査し、多数の規則に基づいて異なるロジックを実行しなければならないことです。少なくとも、すべてのコードは1つの場所にありますが、しかし、その後...すべてのコードは1つの場所にあるのです。
どのように解決するのか?
ルートごとに設定することで、通常、私の場合はうまくいきます。これは私が通常行うことです。
function requireRole (role) {
return function (req, res, next) {
if (req.session.user && req.session.user.role === role) {
next();
} else {
res.send(403);
}
}
}
app.get("/foo", foo.index);
app.get("/foo/:id", requireRole("user"), foo.show);
app.post("/foo", requireRole("admin"), foo.create);
// All bars are protected
app.all("/foo/bar", requireRole("admin"));
// All paths starting with "/foo/bar/" are protected
app.all("/foo/bar/*", requireRole("user"));
関連
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsで終了する方法
-
[解決済み] Node.jsでファイルを書き込む
-
[解決済み] Node.jsアプリケーションをデバッグするにはどうすればよいですか?
-
[解決済み] Node.jsで環境変数を読み込む
-
[解決済み] Node.jsでファイル/ディレクトリが存在するかどうかを同期的にチェックする
-
[解決済み] Node.js上のExpress.jsでGET(クエリ文字列)変数を取得する方法とは?
-
[解決済み] 後で平文を取り出すためのユーザーパスワードの保管について、倫理的にどのように取り組むべきでしょうか?
-
[解決済み】Node.js / Express.js - app.routerはどのように動作するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] サーバー側に送信する前にパスワードをハッシュ化した方が良いですか?
-
[解決済み] Firefoxの同一生成元ポリシーを無効にする
-
[解決済み] PHP セッションセキュリティ
-
[解決済み] ステートレス(セッションレス)・クッキーレス認証を行うには?
-
[解決済み] ポーカーボットを倒す
-
[解決済み] SSLとMan-in-the-Middleの誤解
-
[解決済み] ウェブサイトの管理画面を保護するためのベストプラクティスとは?[クローズド]
-
[解決済み] パスワードハッシュのための非ランダムなソルト
-
[解決済み] なぜ間違ったパスワードのチェックは、正しいパスワードのチェックより時間がかかるのでしょうか?
-
[解決済み] パーミッションシステムのモデル化