Flatironスタックで認証と認可を実装したい(Flatiron、Resourceful、Restfulを使用)。私は、リソースを変更しようとするときに、ユーザーに必要な権限があることを要求したい。 RESTfulなReadmeファイルでは、note about authorizationがあります:Flatironの認証と認可リソースが豊富で安心して
安らかにさらさ アクセスするリソースメソッドのセキュリティと許可を提供するために、いくつかの方法があります。推奨される 承認パターンは、
before
とafter
フックのために冗長な機能を使用することです。これらのフックでは、ビジネスロジック を追加して、リソースのメソッドへのアクセスを制限することができます。ないは理想の世界のように、ルータは、リソースの反映インタフェース なり、ルーティング 層に承認ロジックを配置することをお勧めします。理論的には、ルータ自体のセキュリティは とは多少関係がありません。なぜなら、リソースには同じビジネスロジックを必要とする 反射インターフェイスが複数ある可能性があるからです。
TL; DR;セキュリティと承認のために、手の込んだ、
before
とafter
フックを使用する必要があります。
したがって、認可は、リソースフルのフックシステムで処理できます。
私の実際の問題は、すべてのHTTPリクエストの開始時の認証プロセスです。
私はリソースがPost
、User
、リソースがSession
であるとします。 REST APIは、Restfulを使用して定義されています。この質問に対する私の主な関心事は、投稿を作成するときにセッションがあることを確認することです。 save
,update
などの他の方法や、ユーザーを作成するなどの他の方法についても、同様に動作するはずです。
ファイルapp.js
:
var flatiron = require('flatiron');
var app = flatiron.app;
app.resources = require('./resources.js');
app.use(flatiron.plugins.http);
app.use(restful);
app.start(8080, function(){
console.log('http server started on port 8080');
});
ファイルresources.js
:
var resourceful = require('resourceful');
var resources = exports;
resources.User = resourceful.define('user', function() {
this.restful = true;
this.string('name');
this.string('password');
});
resources.Session = resourceful.define('session', function() {
// note: this is not restful
this.use('memory');
this.string('session_id');
});
resources.Post = resourceful.define('post', function() {
this.restful = true;
this.use('memory');
this.string('title');
this.string('content');
});
resources.Post.before('create', function authorization(post, callback) {
// What should happen here?
// How do I ensure, a user has a session id?
callback();
});
runnable version of the code(感謝@generalhenry)もあります。
投稿を作成しようとしているユーザーがすでにセッションIDを与えられていると仮定し、Cookieヘッダーによってリクエストが送信されるたびに送信されます。前のフックでそのCookieにアクセスするにはどうすればよいですか(つまり、authorization
コールバック)?
例はnode app.js
で開始でき、HTTP要求はcurl
を使用して行うことができます。
私は実行可能なバージョンを作ったhttp://runnable.com/UUvAOjW8r6IwAAuN – generalhenry
@generalhenryありがとう!だからこれで遊ぼう。 – pvorb