0

とてもシンプルなユーザー認証システムを作っています。と の組み合わせを params としてバックエンド nodejs サーバーに渡そうとしてusernamepasswordます。したがって、この組み合わせは、ユーザーの詳細を取得するために私の db クエリで使用されます。

これは私がフロントエンドで試したことです:

var user = new UserModel({id:['username', 'password']});
user.fetch();

私は自分のモデルで urlRoot プロパティを次のように定義しました:/api/users

バックエンドは次の URL を処理します。/api/users/:id

ここでは id を配列として渡したので、これを実行して「ユーザー名」にアクセスしようとしましたreq.params.id[0]。代わりに、「ユーザー名」の最初の文字を返します。しかし、ユーザー名の文字列全体を取りたいです。もちろん、split() 関数を使用してそれらを分離することもできますが、これを行うためのより良い方法があると思います。

私のアプローチがどこか間違っている場合は教えてください。

4

1 に答える 1

1

これは、Backboneが配列を文字列にシリアル化し、それをURIコンポーネントとしてエンコードするためです。

'username%2Cpassword'つまり、事実上、配列の代わりに文字列を送信していることになります。

私は同じ問題を抱えており、サインインプロセスは実際には「物理的な」リソースを表していないため、ユーザーモデルで処理するべきではないと判断しました。サインイン時にユーザーをCRUDすることはありません。

私がしたことは、別のモデルを作成することでしたSignIn

SignInModel = Backbone.Model.extend({
    urlRoot: 'api/sign_in',
    defaults: {
        'username' : '',
        'password': ''
    }
});

これは静的にマップされ(ここにはIDはありません)、リクエスト本文でハンドラーapi/sign_inに渡されたユーザー名とパスワードでデータベースにクエリを実行します。api/sign_in

UserModelその後、ユーザーのCRUDを処理するために残しておくことができます。

于 2012-12-24T10:20:13.447 に答える