2016-04-25 17 views
2

ループバックとパスポート(およびAngularJS)を使用してアプリケーションを作成することに興味があります。ループバック+パスポート戦略に関する詳細情報を探す

私は稼働していて、グーグル経由でログインできるサンプルアプリケーションを参照してください。私が得意でないのは、これがAngularJSアプリケーションでどのように動作するかです。サンプルアプリケーションを使用すると、すべてがサーバー上で行われます(認証)。私がログインしたら、これはクライアント(AngularJS)とループバックサーバーの間で必要とされるアクセストークンとどう関係していますか?私はGoogleと他のアイデンティティ情報からアクセストークンを使って作成されたユーザーを見ることができますが、クライアントが必要とするアクセストークン(AngularJS)とはどのように "接続"していますか?

答えて

1

私はほとんど同様にそれで始まるが、ここだ、私はこれまで把握何をされています

3rd party provider <--- OAuth token ---> Loopback app <--- LB Token ---> Client 

サードパーティプロバイダとの対話に使用OAuthのトーク​​ンは、パスポートによって抽象化され、これまでのところ、私は必要なことはありませんそれと相互作用する。

基本的には、OAuthを使用してログインしたら、ユーザーをさらに識別できるようにLBトークンを生成してユーザーに提供する必要があります。

これを行うには、serializeUserのカスタムコードを実装しました。私のカスタム・ユーザー・モデルはClient

app.serializeUser = function(userDataToSerialize, done) { 
    app.models.Client.create({ 
     email: userDataToSerialize.email, 
     password: userDataToSerialize.password 
    }, 
    function(err, user) { 
    if (err) return done(err); 

    app.models.Client.generateVerificationToken(user, function(err, token) { 
     if(err) return done(err); 

     done(null, { 
     userId: user.id, 
     accessToken: token 
     }); 
    }); 
    }; 

と呼ばれている私は、そのユーザのためのトークンを生成し、その後、新しいクライアントを作成します。トークンとユーザーIDの両方でdone(null,..)を呼び出すと、パスポートはこのデータをセッションに入れさせるため、クライアント側からアクセス可能にする必要があります。

このようにして、AngularアプリはユーザーIDとアクセストークンを取得できるようになり、Loopbackによって適切に識別されます。その後、Loopbackアプリは識別されたユーザーの代わりに第三者プロバイダにリクエストを送信できます。

希望します。

+0

ありがとうございます。私はfacebook(OAuth)を持っていて、ユーザーがログインしていないときにクライアントがコールに失敗したことを示すので、このサンプルアプリケーションをスターターとして使用しています。 –

+0

リンクを忘れてしまった:https://github.com/vkarpov15/stopwatch-server-example –

関連する問題