-1

関連:前号

私はこのモデルを定義しています:

var customer = mongoDev.createModel('customer',
{
    id: {
        type: String,
        id: true
    },
    firstName: String,
    lastName: String,
    badge: String,
    email: String
},
{
    strict: true,
    base: "User"
});

他に何もしなければ、予期したすべての余分なユーザー エンドポイント (ログイン、ログアウト、accessTokens など) を取得します。ただし、ログインの結果は次のとおりです。

{
  "id": "ssOzK8EswH...",
  "ttl": 1209600,
  "created": "...",
  "userId": "53c6f5d4769ed..."
}

userId は customerId である必要があるようです。models.json から user & accessToken モデルを削除しました。そのため、どこかに組み込まれていない限り、どこで関係情報を取得しているのかさえわかりません。とにかく/customer/53c6f5d4769ed...、ヘッダーでトークンを呼び出して提供しようとすると、401 が返されます。技術的には、ID は正しく、FK 名が間違っているだけです。

私は次のようなことを試しました

var accessToken = mongoDev.createModel('accessToken',{},{base: "AccessToken"});
accessToken.belongsTo(customer, {as: 'customer', foreignKey: 'customerId'});

これにより FK 名が変更されたと思いますが、フォローアップ エンドポイントを呼び出すと、まだ 401 が返されます。

自力でたどり着いたところです。だから私の質問は実際にはこれです:

authN に「ユーザー」モデルを使用せずにコード ファーストを使用する場合、accessToken を接続するにはどうすればよいですか (これもコード ファースト)? そしてひねりを加えると、複数の認証モデル (つまり、顧客、ベンダー、従業員) を持つことを計画しています。したがって、本当の問題は、これをどのように配線して、各タイプの「ユーザー」が独自のアクセストークンを取得できるようにするかということです???

泥のように透明?? ;-)

4

2 に答える 2

0

そのため、どこかに組み込まれていない限り、どこで関係情報を取得しているのかさえわかりません。

関係情報はUserモデルに含まれています。あなたcustomerは拡張Userしているので、関係も継承します。

私は次のようなことを試しました

var accessToken = mongoDev.createModel('accessToken',{},{base: "AccessToken"}); accessToken.belongsTo(customer, {as: 'customer', foreignKey: 'customerId'});

userId私の知る限り、ユーザーモデルの名前に関係なく、外部キーが必要です。

var accessToken = mongoDev.createModel('accessToken',{},{base: "AccessToken"});
accessToken.belongsTo(customer, {as: 'user', foreignKey: 'userId'});

問題を再現するためにサンプル アプリを作成しようとしたところ、アプリは問題なく分岐していました (コネクタを使用してテストしました) memorymongodb

var loopback = require('loopback');

var customer = loopback.createModel('customer',
{
    id: { type: String, id: true },
    firstName: String,
    lastName: String,
    badge: String,
    email: String
},
{
    strict: true,
    base: "User"
});

var app = loopback();

app.dataSource('db', {
 connector: 'mongodb' // or memory
});

app.model(loopback.AccessToken, { dataSource: 'db' });
app.model(customer, { dataSource: 'db' });

app.use('/api', loopback.rest());
app.use('/explorer', require('loopback-explorer')(app));
app.listen(3000, function() {
  console.log('Explore at http://localhost:3000/explorer');
});

モジュールのバージョン:

loopback@1.10.0
loopback-datasource-juggler@1.7.1
loopback-connector-mongodb@1.4.1

authN に「ユーザー」モデルを使用せずにコード ファーストを使用する場合、accessToken を接続するにはどうすればよいですか (これもコード ファースト)?

上記の例を参照してください。

そしてひねりを加えると、複数の認証モデル (つまり、顧客、ベンダー、従業員) を持つことを計画しています。したがって、本当の問題は、これをどのように配線して、各タイプの「ユーザー」が独自のアクセストークンを取得できるようにするかということです???

現在、LoopBack はそれをサポートしていないと思います。そのような機能をリクエストする github issue を開いてください。

于 2014-07-23T08:49:02.510 に答える