-2

私は、SpringJetでバックエンドと一緒にangularjsで書かれたモバイルウェブサイトを持っています。今、自分のログインページを持っていて、何の問題もなくユーザーにログインできます。しかし、ユーザーが "back"、 "refresh"などをクリックすると、クライアントはユーザーのIDとログイン情報(ログイン時にサーバーから取得)を失います。私はこの情報が維持されていることを確認し、 "戻る"または "リフレッシュ"をクリックすることですべてが損なわれないようにする必要があります。angularjsクライアントと春のバックエンドユーザーのログインとセッション管理

第2に、ログイン後のURLを知っているユーザーは、ブラウザにそれらのURLを入力してログインすることができます。サーバー上の何かにアクセスすることはできませんが、クライアントでリダイレクトできることこの場合はログインページに表示されます。

ご協力いただければ幸いです!

答えて

0

ブラウザで実行されているすべてがstatelessであることに注意してください。以前の状態のトレースを保持する方法はありません。

ユーザーがリフレッシュ(または別の同様の操作)を実行すると、Angularはすべてを失います(AuthDataが含まれます)。

あなたはその制限を回避するために多くの方法があります。

  1. は、アプリケーションのブートストラップ後、HTTPリクエストを実行する(angular.module().run方法
  2. クッキーを保存し、初期データを印刷するためにサーバーを使用するを見て
  3. JSON経由でDOMに直接、層のローカル/セッションストレージに保存
個人的に

、それがdecouを動作するようにサーバーをすることができますので、私はクッキーを好みますクライアントからのpled。

+0

クッキーの場合、ブラウザがクッキーを許可するかどうかに関する問題はありますか?そしてもしそうなら、どうすればそれらを克服できますか? –

+0

ブラウザ(ユーザを意味する)がクッキーを許可しない場合、クッキーを使用することはできません。単にログインフォームを表示するだけです。 – Hitmands

0

あなたのコメントを参考にして... "ユーザーが"戻る "、"更新 "などをクリックすると、クライアントはユーザーのIDとログイン情報(ログイン時にサーバーから取得)を失います。

認証が成功した後でユーザーIDまたはログイン情報を維持する必要がある理由はありますか。

基本認証用にSpring Securityが設定されている場合は、ログインに成功した後、セッションCookieがクライアントに返されます。以降のサーバーに対するすべての要求で、同じセッションCookieが要求に送信され、以前に認証されたセッションが再確立されます。要求を発行するときにAngularクライアントがCookieを渡していることを確認するだけです。

これがどのように行われたかをこのsampleで見てください。

+0

はい、サーバーへの後続のリクエスト(これはチャットアプリ)に使用されるIDであるため、ユーザーIDを維持する必要があります。 –