この記事では主にExpress+Node.jsでインターセプターを実装するサンプルコードを紹介していますが、編集者が非常に良いと思ったので、参考として共有させていただきます。エディターをフォローして見てみましょう
はじめに
ここでのインターセプターは、Spring MVC のフィルターに対応します。すべての http リクエストは、インターセプターによって処理された後にのみ、対応するコード/リソースにアクセスできます。
最も典型的なアプリケーション シナリオは、アクセス制御を実装し、異なるユーザー/ユーザー グループにページとインターフェイスへの異なるアクセス権を与え、許可されたページとインターフェイスへのアクセスのみを許可することです。
シナリオ
app.post('/login', function(request, res, next){ // do something }); app.post('/getData',function(request, res, next){ // do something var data="some data"; res.send({"data":data}); });
処理が行われない場合、getData に post リクエスト を送信する人は誰でも、ログインせずにバックグラウンドからデータを直接読み取ることができ、インターフェースを知るだけで済みます。
各インターフェースにパーミッション判定を追加すると、コードの繰り返しが多くなるため、各 http リクエストの前にインターセプタを追加してパーミッション判定を実現します。
実装
// 所有用户可以访问index.html, error.html // admin可以访问admin.html, /getData // 登陆用户可以访问home.html app.all('/*', function(request, res, next){ // 思路: // 得到请求的url // 然后得到request的cookie,根据cookie得到当前登陆的用户 // 判断用户对应url的权限 var jsPattern=/\.js$/; var url=request.orignalUrl; if(jsPattern.test(url)){ // 公共部分,放行 next(); return; } if(url=='index.html'||url=='error.html'){ next(); return; } var cookie=JSON.stringify(req.cookies); if(access){ next(); } else{ res.redirect('error.html'); } });
実装のアイデア:
1. すべてのリクエストをインターセプトし (上記で十分です)、現在アクセスされている URL を取得します
2. Cookie に基づいて現在のユーザーを取得します。
3 . URL と対応するユーザーの ID に基づいてアクセスできるかどうかを判断します
4. アクセスできない場合は、
を返します。
next(); は、前の app.post('/getData') など、最初にリクエストを処理したコードに対応する単なる関数です。対応する next(); に戻るので、処理する必要があります。適切な対応関係があります。必要に応じて、現在の関数を終了するために戻る必要があります。そうしないと、エラーが発生します。
、CSS パーツなどの公開パーツについては、直接リリースできます。
以上がShare Express + Node.jsによるログインインターセプターの実装詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。