最終的に、元のワークフローをExpressの認証例と組み合わせました。
- ユーザーが最初にアプリをロードすると、Expressエンドポイントに対してhttp呼び出しが行われ、ユーザーのセッションがすでに存在するかどうかが確認されます。その場合、ユーザーは
$rootScope
に保存されます ログインしていると見なされます。 - AngularJSルートが変更されるたびに、同じエンドポイントにアクセスします。ルート保護は、ここ
。エンドポイントがセッションが存在しないことを返す場合は、
$rootScope.user
が設定されておらず(必要な場合)、ユーザーはログインページにリダイレクトされます。 - ログインフォームが処理されると、Expressエンドポイントに投稿されます。エンドポイントは、mongoDB(存在する場合)からユーザーを取得し、パスワードのハッシュを試みます。一致する場合、ユーザーのセッションが設定され、mongo DBに保存され、エンドポイントは
user
を返します。 オブジェクト(前述のように$ rootScopeに格納するために使用されます)。 - それ以上のエンドポイントにアクセスするときはいつでも、関数は最初に
restrict
を通過します。 クライアントにデータを送信する前にセッションが存在することを確認する関数。401
を返します セッションが存在しない場合は、このHTTPインターセプター を使用してAngular側で処理されます。$rootScope.user
の設定を解除します ログイン画面にリダイレクトします。 - ユーザーがAngular側で[ログアウト]をクリックすると、セッションが設定解除され、mongoDBの
$rootScope.user
から削除されます。 nullに設定され、ユーザーはフロントページにリダイレクトされます。