ホームページ > ウェブフロントエンド > jsチュートリアル > Share Express + Node.jsによるログインインターセプターの実装詳細説明

Share Express + Node.jsによるログインインターセプターの実装詳細説明

零下一度
リリース: 2018-05-26 15:22:19
オリジナル
2606 人が閲覧しました

この記事では主に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(); に戻るので、処理する必要があります。適切な対応関係があります。必要に応じて、現在の関数を終了するために戻る必要があります。そうしないと、エラーが発生します。

    js プラグイン、一部の
  1. 画像

    、CSS パーツなどの公開パーツについては、直接リリースできます。

以上がShare Express + Node.jsによるログインインターセプターの実装詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート