カスタムJWTルーティングをループバックセキュリティモデルに適合させる方法を理解しようとしています。私のアプリケーションには、SMSを含む認証「ダンス」があり、 優れた説明 を使用して有効なJWTトークンが生成されます。 jsonwebtoken を使用しています=そして物事は期待どおりに機能します。トークンを取得した後、angular.jsクライアントはAuthorisation: JWT ..token..
ヘッダーの各リクエストでトークンを送信します(矛盾するドキュメントが見つかりました。1つはJWT、1つはベアラーですが、私はそれを理解できます)。
ここで、ループバックアプリケーション内でトークンを利用したいと思います。ループバックが提供するACLシステムを使用したいと思います。私は次のリソースを読みました:
そして、私は私の次のステップが何であるかはっきりしていません。私は働いています:
私は欲しい:
ヘルプは非常に高く評価されています
解決策は、私よりもはるかに簡単であることがわかりました。初心者の場合、ループバックは独自のjwt webtokenを使用して(ステートレス)ユーザーセッションを維持します。 IDを確立した後(私の場合はJWTトークンから携帯電話番号を抽出します)、メンバーを検索してループバックネイティブJWTトークンを生成する必要があります。私のエンドポイントの定義は次のとおりです。
Member.remoteMethod(
'provideSMSToken', {
accepts: [{
arg: 'mobilenumber',
type: 'string',
description: 'Phone number including +65 and no spaces'
}, {
arg: 'token',
type: 'string',
description: 'the token received through SMS'
}],
returns: {
arg: 'token',
type: 'string'
},
description: 'provide SMS token to confirm login',
http: {
path: '/smsauthenticate',
verb: 'post'
},
isStatic: true
}
);
そしてprovideSMSToken
関数は次のようになります:
// Exchange the SMS Token with a login token
Member.provideSMSToken = function(mobilenumber, token, cb) {
var app = Member.app;
// CHeck if the token does exist for the given phone number
// if yes, check for the respective memeber
if (!app.smsVerificationToken || !app.smsVerificationToken[mobilenumber] || app.smsVerificationToken[mobilenumber] !== token) {
var wrongToken = new Error("Wrong or missing token");
cb(wrongToken, "Wrong or missing token");
} else {
var timetolive = 86400;
Member.lookupByPhone(mobilenumber, function(err, theOne) {
if (err) {
cb(err, "Sorry, no such member here!");
} else {
// We can provide a token now for authentication
// using the default createAccessToken method
theOne.createAccessToken(timetolive, function(err, accesstoken) {
cb(err, accesstoken);
})
}
});
}
}
チャームのように機能します