2016-06-19 10 views
0

私はAngularJSの新機能です。私はAPIのバックエンドとしてDrupalを使用します。AngularJS:これは認証のための悪い習慣ですか?

だから、これは私の問題です:ユーザーがログインしている場合は

、Drupalは、ユーザーがまだログインしているリフレッシュのためログインしているユーザーを維持するためにクッキーに自動的SESSIONNAME =セッションIDが保存されますが、私は、ユーザーID、彼の電子メール、彼のお気に入りの映画を失う...

私の解決策は:app.run()のサーバーに要求を送信すると、私はこれらのデータをAuthetificationService.currentUserに保存します。ユーザーはログに記録されます。私は自分のデータをすべて持っています。それ以外の場合、currentUserはNULLになります。

これは悪い習慣ですか?

注記:あなたの提案がwebStorageまたはcookieStorageになる場合は、私が保存する必要があるものと、Cookieまたはローカルストレージを空にする必要があるときに正確に教えてください。

+0

トークンベースの認証を使用してください。ユーザーのトークンをブラウザのセッションストレージに保存し、閉じるタブまたはブラウザでトークンが自動的に削除されます。 –

+1

トークンベースの認証は基本的にすべての要求のヘッダーにトークンを送信しています。これは、ユーザーがログインしているかどうかを保証します。しかし、私の問題は、どのように私はリフレッシュ後に角度の重要なデータを保持する。私は毎回更新するたびにそれらのデータを取得するためにサーバーを呼びたいとは思わない! –

答えて

0

ここで私は従って、通常使用されるプラクティスです:

  1. Login->は

サーバー上のセッションを作成 - > ストアユーザーオブジェクトと、例えばのlocalStorage で重要な情報

localStorage.setObject("myApp_user",user); 
localStorage.setObject("myApp_movies",movies); 
  1. 更新ページ(ログインしている場合) チェックセッションを(セッションをご確認ください) - > はのlocalStorageからユーザデータを取得し、それを使用し 例えば

    UserService.user = localStorage.getObject("myApp_user"); MoviesService.movies = localStorage.getObject("myApp_movies");

  2. ログアウト サーバー上でセッションを閉じる - > cookie-> localStorageからデータを削除する。 localStorage.removeItem("myApp_user"); localStorage.removeItem("myApp_movies");

希望します。

+0

こんにちは、もう一度、この明白な答えをありがとう、私はまだ2つの質問があります:#1チェックセッション(ログインしている場合)は、セッションIDがクッキーに存在するかどうかを確認することを意味しますか? #2ユーザーはlocalStorageの値を変更でき、ユーザーの役割を保存したいので、これはもはや安全ではありません。フリーユーザーは彼の役割をプレミアムに変更できますか? –

+0

Answer1:はい。セッションIDを確認する必要があります Answer2:プロファイルと基本情報、プロファイルイメージなどの基本情報のみをロールやセキュリティで保護された情報に格納することはありません。 パスワード/セキュリティ情報を取得し、サーバーから – AhsanAyaz

関連する問題