2016-09-25 1 views
-1

Ich bin neu in Play Framework. Ich mache das Üben (Play + Java), indem ich verschiedene Arten von Szenarien, z. Verbindung mit der DB, Daten aus Datenbank mit JPA abrufen, Master Detail-Formulare, Speichern von Daten in Datenbank usw.Benutzer-Authentifizierung - Play Framework, Java

Ich möchte Benutzerauthentifizierung implementieren. Benutzeranmeldung in der Anwendung Um auf die Anwendung zuzugreifen, muss der Benutzer eine Berechtigung haben.

Beispiel: Mitarbeiter - Hinzufügen/Bearbeiten/Anzeigen/Löschen. Einige Benutzer haben möglicherweise alle Berechtigungen und einige Benutzer haben nur Ansicht oder Hinzufügen/Bearbeiten/Löschen oder nur Bearbeiten. Selbst in der Option Mitarbeiter bearbeiten kann der Benutzer nur bestimmte Felder bearbeiten, z. Der Name des Mitarbeiters ist nicht erlaubt, aber die Adresse des Mitarbeiters kann bearbeitet werden. d.h. Berechtigung auf Feldebene.

Dank

+0

https://github.com/joscha/play-authenticate –

+0

und für die Zulassung zu setzen: https://github.com/schaloner/deadbolt-2 – bopa

Antwort

0
  1. Verwendung eines Authentifizierungs Controller-Benutzer-Login-ID/Passwort class AuthController @Inject()(cache: CacheApi, cached: Cached, actorSystem: ActorSystem) extends Controller {

  2. wenn id/Passwort korrekt ist, erzeugt einen UUID Schlüssel und gespeicherte Benutzerobjekt (uservo) einzuzuchecken Speichercache mit UUID-Schlüssel. Der Schlüssel kann im Browser-Cookie gespeichert werden.

val cacheTimeout = 10.minutes val key = UUID.randomUUID.toString cache.set(key, uservo, cacheTimeout) Ok().withSession(request.session + ("key" -> key))

  1. Wir Cookie mit "Schlüssel" Wert in den folgenden HTML-Anfragen erhalten. Wenn der Schlüssel aus dem Speichercache abgerufen werden kann, ist der Benutzer berechtigt, die Aktion auszuführen. Denken Sie daran, den Cookie-Wert wieder, oder aber der im Cache gespeicherten uservo im Speicher-Cache Timeout nach 10 Minuten

(request.session.get("key").flatMap { key => cache.get[Uservo](key) } map { uservo => // need to set cache with "key" again, or else the memory will timeout in 10 minutes cache.set(request.session.get("key").get, uservo, cacheTimeout) // do the action.. }).orElse { // failed and return to login home page Some(Future(Redirect("/").withNewSession)) }