フェザーでは、特定のサービスでアクセス可能なデータを、現在ログインしているユーザーが所有するデータに制限することを目標としています。フェザー - 現在のユーザーのみが所有するデータに対するサービス応答を制限する
私がFeathers認証を使用していると仮定すると、このサービスで利用可能なデータはデータベーステーブルに格納され、ユーザーIDを含むテーブル列はuser_id
と呼ばれます。
変更しない場合はどうすればよいですか?
質問に答えることが重要な場合は、SequelizeとPostgresを使用しています。
const { authenticate } = require('feathers-authentication').hooks;
const { queryWithCurrentUser } = require('feathers-authentication-hooks');
const { associateCurrentUser } = require('feathers-authentication-hooks');
const readRestrict = [
queryWithCurrentUser({
idField: 'id',
as: 'user_id'
})
];
const modRestrict = [
associateCurrentUser({
idField: 'id',
as: 'user_id'
})
];
module.exports = {
before: {
all: [ authenticate('jwt') ],
find: [ ...readRestrict ],
get: [ ...readRestrict ],
create: [ ...modRestrict ],
update: [ ...modRestrict ],
patch: [ ...modRestrict ],
remove: [ ...modRestrict ]
},
after: {
all: [],
find: [],
get: [],
create: [],
update: [],
patch: [],
remove: []
},
error: {
all: [],
find: [],
get: [],
create: [],
update: [],
patch: [],
remove: []
}
};
動作するようですが、私は羽がnoobのだので、私はこれは私がそれに気づかないよ何も例がないことを確認するために野生に入れられる前に、私はより良いチェックをしようと思いました漏れの原因となります。
いいですね。期待どおりに動作しないと思われる理由は何ですか? – Daff
ありがとう!それは、私がFeathers(とJS)の新人で、野生にリリースする前に再確認したいということです。フェザーのシーンの裏にはたくさんのことがあるので、私が何か重要なものを見逃していたかどうかは分かりませんでした。フレームワークはあなたのためにとても役に立ちますので、あまりにも簡単です。私が忘れてしまったものがなければなりません。 :)素晴らしいフレームワークをありがとうございました! – Matty
websocket接続を許可する場合は、適切な*フィルタ*をサービスに追加する必要があります。デフォルトでは、フックに関係なく、すべてのイベントがすべてのクライアントにプッシュされます。つまり、ユーザーがサービスに新しいレコードを作成すると、接続されているすべてのクライアントがそのレコードを受信します。 – jsphpl