2016-07-20 4 views
0

Ich mache eine Scala - Play-Anwendung und ich möchte einen Benutzer trennen, wenn ein Administrator sein Recht ändern. Beispiel: Wenn ein Benutzer angemeldet ist und ein Administrator sein Konto auf den Admin-Typ aktualisiert, möchte ich diesen Benutzer trennen. Wie kann ich das tun?Play Framework - Trennen Sie einen Benutzer

+0

Es hängt davon ab, wie Sie feststellen, ob ein Benutzer angemeldet ist? Speichern Sie die Benutzer-ID in der Sitzung? – vdebergue

+0

Y'es Ich speichere die userId –

Antwort

0

Wenn Sie die userId in der Session gespeichert haben, müssen Sie die Rechte des Benutzers in der Session hinzufügen.

So, wenn der Benutzer verbindet, können Sie seine Rechte von der Sitzung zu denen in Ihrer Datenbank überprüfen. Wenn sie nicht übereinstimmen, können Sie den Benutzer auf die Anmeldeseite umleiten.

+0

Okay, aber mein Problem ist nicht, wenn der Benutzer verbindet, aber wenn er bereits verbunden ist und ich sein Recht für ein weniger permissives Recht ändern, kann er die alte Seite von seiner alten Rolle konsultieren, wie er es tat 't disconnected –

+0

Wenn der Benutzer eine Seite zum Server abfragt, prüfen Sie bereits, ob der Benutzer verbunden ist: wahrscheinlich mit einer 'SecuredAction' und prüfen, ob eine' userId' in der Sitzung definiert ist. Sie müssen die andere Überprüfung dort hinzufügen: Wenn er die Rolle nicht hat, senden Sie einen Fehler, andernfalls senden Sie die Seite – vdebergue

0

nur alle Grundlagen abzudecken, da hier die Antwort ausdrücklich davon abhängig, wie Ihre Anwendung bestimmt, ob ein Benutzer angemeldet ist:

wenn Benutzer-Auth mit einem Token von einem Geheimnis erzeugt getan, die auf Ihrem Benutzer gespeichert modellieren und bei jeder Anfrage auf Gültigkeit überprüfen, können Sie ein neues Geheimnis für den Benutzer generieren und alle vorhandenen Token werden ungültig.