2017-05-09 8 views
0

私は単純なBackandとIonicアプリを持っています。たとえば、Facebookアプリのように、ユーザーは一度ログインすればいいだけです。 一度ユーザーがログインすると、私はBackandからトークンを受け取ります。私が知っていることから、私はlocalStorageにトークンを保存しなければならないと仮定します(これは私がやっていることです)。しかし、その時点から、私は彼が再訪するときにユーザーをログインさせるために必要なことを理解していません。Backandでアプリケーションを再オープンしたときの自動ログインユーザー

localstorage内の既存のトークンを探すために角型の「実行」メソッドを試しました。存在する場合は、httpヘッダーに貼り付けます。 (次の関数は認証サービスに存在し、 "run"メソッドで呼び出されています)。

self.checkExistingUser = function() { 
    if ($localStorage.user_token) { 
    $http.defaults.headers.common.Authorization = $localStorage.user_token; 
    Backand.user.getUserDetails() 
     .then(function (response) { 
      // Do stuff 
     } 
    console.log('Token found, logging in user'); 
    } 
}; 

"getUserDetails()"呼び出しが、私が今追加したAuthorizationヘッダーを解釈すると仮定しました。しかし、それは私が誤解したことです。それはどのように動作するのではありません。

私の質問は、どのように自動的にそのトークンを持つ返される(既存の)ユーザーにログインするのですか?私はBackandのドキュメントでその目的のための関数を見つけることができないようです。

ありがとうございます!

答えて

0

あなたのコメントは私の質問、Kornatzkyへの答えを見つけさせました。

問題は、私がappName,anonymousTokenおよびsignUpTokenを初期化(BackandProvider.init)に含めたことでした。 anonymousTokenを削除し、useAnonymousTokenByDefault:falseを追加すると問題が解決しました。

getUserDetailsは、現在Guestオブジェクトではなく現在ログインしているユーザーを返します。ご協力いただきありがとうございます!

0

バックエンドVanilla SDK使用して、このコード:

backand.user.getUserDetails(false) 
    .then(res => { 
    console.log(res.data); 
    }) 
    .catch(err => { 
    console.log(err); 
    }); 

は、彼が認証された場合、ユーザーの詳細を取得、またはnullの場合はありません。 再度ログインする必要はありません。 falseの場合、バックエンドに問い合わせることなく内部的にチェックされます。あなたはそれの周りにあなたのアプリを構築する必要があります。

+0

お返事ありがとうございます。 "getUserDetails"を実行すると、アプリケーションの読み込み時に実行されます。だから私は私のアプリをリフレッシュするとき(ユーザーをシミュレートする、私はこれをクロムでテストしている)、getUserDetailsは、ユーザーがログインしていないかのように、 "Guest"というオブジェクトを私に与える...ユーザーが実際にログインすると彼のユーザ名とパス、Backandは "access_token"を返します。このトークンを使用して問題を解決できますか? – pieterjanvdp

+0

すでにログインしている場合は、匿名トークンを使用していない限り、 'getUserDetail'はゲストを返しません。アプリAPIのサインアップトークンを設定しましたか?あなたはBack&Security&Auth> Social&Keysで見つけます – Kornatzky