0

私のワークフローは次のとおりです。

  1. 新しいユーザーのサインアップに対する Ember のアクションは、Express にユーザー データを送信することです。
  2. 次に、Express は Web トークンを作成し、コンテンツを暗号化し、Nodemailer で送信する電子メールにリンクを挿入します。
  3. メールは正常に送信されました。
  4. ユーザーは自分の電子メールに移動し、リンクをクリックします。
  5. リンクをクリックすると、Express はクエリ パラメータからトークンを取得し、トークンを復号化してデコードし、新しいユーザーを作成します。

上記のすべては正常に機能しますが、ここで行き詰まっています。ユーザーが Ember フロントエンドにリダイレクトされ、自動的にログインされるようにしたいと思います。これは私が行き詰まっているビットです。サーバーコードは次のとおりです。

<!-- language: lang-js -->
signUpUser.save().then(function(model) {
        res.set('location', 'http://localhost:4200/login');
        res.status(302).json({user:model})
});

正常にリダイレクトすることはできますが、ember コードで json データをキャプチャすることができず、特定のシナリオでログイン アクションを呼び出すことができる場所や方法がわかりません。

私のアプローチが間違っているかもしれないと感じていますか?電子メールの確認は一般的なものだからです。また、ユーザーにフォーム情報を複数回入力させる必要はありません。

4

2 に答える 2

1

これが私がこれをやっている方法です:

  1. Express では、ユーザーを保存した後、応答 URL にクエリ パラメータを追加します。
signUpUser.save().then(function(model) {
    res.set('location', 'http://localhost:4200/login?token=' + token + 'id=' + id);
    res.status(302).json({user:model})
});
  1. Ember の /login ルートの beforeModel フックで、クエリ パラメータを取得します。
beforeModel: function(transition) {
    console.log(transition.queryParams.token);
    if (transition.queryParams.token) {
        this.controllerFor('login').send('assignTokenToUser', transition.queryParams.token, transition.queryParams.id);
    };

    if (!Ember.isEmpty(this.controllerFor('login').get('token'))) {
        return this.transitionTo('courses');
    }
}

これが Ember Way かどうかはわかりませんが、ここで重要なのは遷移オブジェクトの queryParams を取得できることです。

于 2015-03-06T20:54:46.580 に答える