Es hängt sehr stark auf Ihre API-Struktur, aber ich würde somethign wie folgt empfehlen:
Erstens würden Sie das Nativescript Http Modul verwenden müssen. Eine Implementierung ein ein HTTP-GET-Anrufe bekommen zurück Header könnte wie folgt aussehen:
http.request({ url: "https://httpbin.org/get", method: "GET" }).then(function (response) {
//// Argument (response) is HttpResponse!
//for (var header in response.headers) {
// console.log(header + ":" + response.headers[header]);
//}
}, function (e) {
//// Argument (e) is Error!
});
So Backend könnte ein JSON-Web-Token als Header zurück. In diesem Fall würden Sie Ihren Token wahrscheinlich im persistenten Speicher der Anwendungen speichern. Ich würde das Application Settings Modul verwenden, die etwas aussehen würde: Dann
var appSettings = require("application-settings");
appSettings.setString("storedToken", tokenValue);
, bevor Sie einen API-Aufruf für ein neues Token machen Sie prüfen, ob es eine gespeicherte Wert:
var tokenValue = appSettings.getString("storedToken");
if (tokenValue === undefined {
//do API call
}
dann mit Ihr Token möchten Sie einen API-Aufruf, z diese POST und fügen Sie das Token als Header:
http.request({
url: "https://httpbin.org/post",
method: "POST",
headers: { "Content-Type": "application/json", "Auth": tokenValue },
content: JSON.stringify({ MyVariableOne: "ValueOne", MyVariableTwo: "ValueTwo" })
}).then(function (response) {
// result = response.content.toJSON();
// console.log(result);
}, function (e) {
// console.log("Error occurred " + e);
});
Ihr Back-End der Auth
Header und Validierung der JWT überprüfen müssten, um zu entscheiden, ob der Anruf anzunehmen oder abzulehnen.
Alternativ gibt es einige schöne Plugins für verschiedene Backends-as-a-Service, z.B. Azure und Firebase
Verwenden Sie das NativeScript-Angular-Modul? Wenn dies der Fall ist, wäre das Nachverfolgen der angular2 Auth-Themen ein guter Anfang und das Speichern des Auth-Schlüssels, wie George unten angibt. Schauen Sie sich auch das Beispiel in GitHub an: https://github.com/NativeScript/nativescript-angular/blob/master/ng-sample/app/examples/router/login-test.ts, besonders wenn Sie den neueren verwenden Router. – Matthew
Mein Hauptproblem ist, wie man die unterstützte Sitzung aufrecht erhält. Asp.net gibt nach einer Anmeldung ein Authentifizierungs-Cookie zurück. Ich versuche @George Edwards Kommentar zu verwenden und speichern Sie den Cookie bei appSetting –
@SimeonGrigorovich gut mein Ansatz ist ein Staatenloser - wo Sie keine Sitzung (viel mehr skalierbar) pflegen müssen. Sie legen JWTs so fest, dass sie eine Ablaufzeit/ein Ablaufdatum haben, und jede Anfrage mit einem gültigen JWT wird autorisiert. Keine Notwendigkeit, Informationen über alle eingeloggt zu haben. –