ForgeTotal.js 5
de

Total.js 5

Aktionstransportoptionen und explicit TMS-Veröffentlichung

Total.js 5 · total5@0.0.19 total5reference Mit Total.js 5 ausgeführt

In total5@0.0.19: NEWACTION() speichert csrf, encrypt und compress in Aktionsmetadata, aber sie stellen nicht die HTTP-Garantie, dass ihre Namen auf HTTp-Routen empfehlen könnten:

  • csrf:true allein akzeptiert einen POST ohne Token. Verwende eine Middleware, die DEF.onCSRFcheck() mit konfiguriertem secret_csrf aufruft, wie in csrf-protection.
  • encrypt:true auf einer angekündigten Route fügt @encrypt Metadaten hinzu, aber diese Version akzeptiert immer noch den JSON-Test und gibt den JSon-Tast zurück.
  • compress:false deaktiviert nicht die gewöhnliche HTTP gzip; die Reaktionskompression folgt $httpcompress, der akzeptierte Codierung und Antwortgröße des Kunden.
  • publish erklärt ein TMS-Thema/Schema.Eine Aktion wird nicht automatisch veröffentlicht.Rufen Sie $.publish(value) ausdrücklich und bauen Sie die öffentliche Zahlung absichtlich.Sie wählen die Felder, um zu veröffentlichen, bevor Sie $.publish(value) rufen.

Konfigurieren Sie den TMS-Token für Ihre Anwendung. TMS Nachrichten gehen an Abonnenten dieses Themas; Anwendungsgenehmigungen und Gebührenregeln gehören immer noch in Ihrem Code.

config
secret_csrf : local-csrf-fixture-only
$tms : true
secret_tms : local-tms-fixture-only
$httpcompress : true
definitions/transport.js
NEWACTION('Transport|csrf', {
	csrf: true,
	input: '*value:String',
	action: function($, model) { $.callback(model); }
});
NEWACTION('Transport|encrypted', {
	encrypt: true,
	route: 'POST /encrypted/',
	input: '*value:String',
	action: function($, model) { $.callback(model); }
});
NEWACTION('Transport|compressed', {
	compress: false,
	action: function($) { $.callback({ text: 'abcdefghij'.repeat(400) }); }
});
NEWACTION('Transport|notice', {
	publish: 'value:String',
	input: '*value:String',
	action: function($, model) {
		$.publish({ value: model.value });
		$.success();
	}
});
controllers/transport.js
exports.install = function() {
	ROUTE('POST /csrf-option/ @json --> Transport|csrf');
	ROUTE('GET /compression-option/ --> Transport|compressed');
	ROUTE('POST /notice/ @json --> Transport|notice');
};