これがしばらくの間、Stormpath API に関する私の最後の質問になることを願っています。C# および PHP からノードへの切り替えは、やや困難でした。
登録ページにソーシャルログインを実装しようとしています。事前構築済みオプションは、ログイン ページにのみ配置します。
ページをレンダリングして Jade ビューに要素を追加するのは簡単ですが、oauthStateToken を取得する必要があります。ここで、login.js コードがこれを行う方法を調べました。
var oauth = require('../oauth');
var oauthStateToken = oauth.common.resolveStateToken(req, res);
var formActionUri = (config.web.login.uri + (nextUri ? ('?next=' + nextUri) : ''));
var hasSocialProviders = _.some(config.web.social, function (socialProvider) {
return socialProvider.enabled;
});
extend(options, {
form: form,
formActionUri: formActionUri,
oauthStateToken: oauthStateToken,
hasSocialProviders: hasSocialProviders
});
したがって、基本的に宣誓ファイルを呼び出してコードを調べます。理論的には、register.jsで同様のことを行うことができます-基本的に(サンプルコードのみ):
var oauth = require('../oauth');
var _ = require('lodash');
var hasSocialProviders = _.some(config.web.social, function (socialProvider) {
return socialProvider.enabled;
});
var oauthStateToken = '';
if (hasSocialProviders) {
oauthStateToken = oauth.common.resolveStateToken(req, res);
}
helpers.render(req, res, view, {
form: helpers.sanitizeFormData(req.body),
formModel: viewModel.form
oauthStateToken : oauthStateToken,
hasSocialProviders: hasSocialProviders
});
もちろん、コアファイルをいじりたくないので、ミドルウェア機能を作成することを考えていましたが、app.use('/register', callFunction, router);
それがどのように機能するかを概念化するのに苦労しています。ストームパスで、JWT を使用して Cookie として保存する oauth トークンを生成する方法を理解しているようですが、ライブラリに既に存在する多くのコードを複製せずに、動作するコードにまとめるのに苦労しています。
REST API を使用して動作させることもできますが、express-stormpath ライブラリ内で使用したいと考えています。したがって、express-stormpath ライブラリのコンテキストでの説明も啓発的です。または、私はこれを考えすぎていますか? ライブラリをフォークし、register.js に変更を加えて、アップストリームにプッシュする必要がありますか?
改めて感謝します。