このユースケースでは、ユーザー(プロバイダとコンシューマ)の2つの異なるモデルが必要です。したがって、ユーザーモデルをコンシューマーとプロバイダーのモデルに拡張しましたが、プロバイダーのAccessTokenもコンシューマーのために働き始めた時点ですぐに問題に遭遇しました。ループバック拡張アクセストークンモデルで問題が発生する
例:プロバイダAがユーザIDが1であり、ユーザAがユーザIDが1であると仮定しよう。プロバイダAがログインしてAccessTokenを受信した場合、ユーザはaccessTokenでコンシューマモデルをクエリしてコンシューマAに関する情報を抽出することもできる。これは災害を喚起することができます。 ctx.req.accessToken.userIdは、コンシューマモデルでコンシューマトークンとプロバイダトークンの両方を1を返します。
AccessTokenモデルをAccessTokenProviderとAccessTokenConsumerに拡張しようとしました。ここでAccessTokenConsumer
"relations": {
"user": {
"type": "belongsTo",
"model": "consumer",
"foreignKey": "userId" } }
と消費モデルの
"relations": {
"accessTokens": {
"type": "hasMany",
"model": "AccessTokenConsumer",
"foreignKey": "userId",
"options": {
"disableInclude": true
}
} }
のモデル関係があるしかし、今ctx.req.accessTokenはnullを返し、ログアウト残りの機能は、「accessTokenを見つけることができませんでした」のエラーになります