Sitzung beginnen
Eine Session-ID wird über die Sessions-Ressource angefordert. Dazu rufen Sie die POST-Route /application/sessions mit Benutzername und Passwort im HTTP-Request-Body auf:
{
"username": "jdoe",
"password": "2r5iq|!O%{o@?ApR1q%8"
}
Bitte beachten Sie: Da das Passwort in Klartext übertragen wird, sollte eine sichere Verbindung (HTTPS) genutzt werden.
Der Antworttext wird im folgenden JSON-Format zurückgeliefert:
{
"sessions": [{
"userName": "jdoe",
"sessionId": "ad21c2d0bf7e4bc130943e2004fdce03",
"loginTime": "2017-08-25T14:20:18+02:00",
"lastAction": "2017-08-25T14:20:18+02:00",
"ip": "2a02:8071:891:6000:f16b:8d12:d771:e057",
"sessionType": null,
"sessionName": "PHPSESSID"
}]
}
Bei erfolgreicher Authentifizierung wird eine Session-ID (sessionId) zurückgegeben. Diese wird zusammen mit dem Sessionnamen (sessionName) als Cookie vom Client für nachfolgenden Anfragen verwendet. Nach Ausführung der Anfragen kann die Sitzung beendet werden.
Konnte der Benutzer anhand der übertragenen Daten nicht authentifiziert werden (z.B. wegen falschen Anmeldedaten), wird die Anfrage mit Statuscode 401 und Meldung User is not authorized abgewiesen.
Die Sitzung kann anhand der DELETE-Route /application/sessions beendet werden. Dabei wird die Session des authentifizierten Benutzers gelöscht.
Bei erfolgreicher Abmeldung wird der Status-Code 204 zurückgegeben.
Beispiel
// Client wurde bereits initialisiert
try {
// Sitzung beginnen (Benutzer authentifizieren)
$response = $client->post('application/sessions', [
'json' => [
'username' => 'jdoe',
'password' => '2r5iq|!O%{o@?ApR1q%8',
],
]);
// Session-ID ermitteln
$sessionData = json_decode($response->getBody(), true);
$sessionId = $sessionData['sessions'][0]['sessionId'];
echo "Session ID: " . $sessionId;
// ... weitere Aktionen hier ...
// Sitzung beenden
$response = $client->delete('application/sessions');
} catch(Exception $e) {
echo "Fehler: " . $e->getMessage();
}
$data = '{
"username": "jdoe",
"password": "2r5iq|!O%{o@?ApR1q%8"
}';
$headers = [
'Accept: application/json',
'Content-Type: application/json',
];
$url = 'http://example.org/jobrouter/api/rest/v2/application/sessions';
// Sitzung beginnen (Benutzer authentifizieren)
$curlHandle = curl_init();
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curlHandle, CURLOPT_URL, $url);
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curlHandle, CURLOPT_POST, 1);
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $data);
curl_setopt($curlHandle, CURLOPT_COOKIEJAR, 'path/to/cooke/file.cookie');
$response = curl_exec($curlHandle);
$code = curl_getinfo($curlHandle, CURLINFO_HTTP_CODE);
if ($code === 201) {
$response = json_decode($response, true);
$sessionId = $response['sessions'][0]['sessionId'];
} else {
echo 'Fehler beim Authentifizieren: ' . $code;
var_export($response);
}
// ... weitere Aktionen hier ...
// Bitte beachten Sie, dass eventuell ein curl_reset-Aufruf notwendig ist,
// um die cURL-Optionen vor der nächsten Anfrage zurückzusetzen!
// Sitzung beenden
curl_reset($curlHandle);
curl_setopt($curlHandle, CURLOPT_URL, $url);
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curlHandle, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($curlHandle, CURLOPT_COOKIEFILE, 'path/to/cooke/file.cookie');
curl_exec($curlHandle);
curl_close();
Hinweis: Bei größeren Projekten ist es sinnvoll, sich wiederholende Aktion, wie z. B. Authentifizieren und Abmelden, in separaten Klassen bzw. Dateien zu implementieren.