4

Express と Passport を使用して認証と承認を行うノード アプリケーションを作成していますが、すべて正常に動作しています。ただし、Angular コントローラーで現在のユーザー (Passport によって req.user として設定) を取得する方法に困惑しています。

ヘッダー/ナビゲーションバーにユーザー名を表示するなどの通常のことを実行できるようにしたいと考えており、現在は Jade ビュー エンジンを使用してこれを行っていますが、Jade ビュー エンジンを使用して混合するのは好きではありません。いくつかの「データバインディング」と Angular です。

ここで、req.user を JSON として返すノードの API エンドポイントを簡単に呼び出すことができることはわかっていますが、ページの読み込みが発生するたびにそのエンドポイントにアクセスすることになるため、これは醜い解決策のように思えます (これはSPA ではありません)。

したがって、私の質問は基本的に次のとおりです。Angularビューで現在ログインしているユーザーを取得して、サーバー側(Jadeビューエンジンを使用)とAngularを使用したクライアント側の代わりに、すべてのデータバインディングクライアント側を実行できますか?

注: すべてが実際に意図したとおりに機能しているため、コード スニペットはありません。現在持っているものよりも優れた代替手段を望んでいます。

4

1 に答える 1

1

ng-app を定義する DOM で「ng-init」を使用することを検討してください。これは、Express で印刷されたサーバー側のデータです (Dust テンプレートを想定)。以下は、これの簡単な例です。

    <body ng-app="testApp" ng-controller="homeCtrl" ng-init="logged_in_user = {req.user}">
      <div...
      ...
    </body>

次に、「scope.logged_in_user」として、homeCtrl の Logged_in_user にアクセスできます。

-バスカラ

于 2013-06-04T14:13:50.357 に答える