1. Écrivez le code SessionFilter.Scala
Filtres de package Import Javax.inject. {Inject, singleton} Importer akka.stream.materializerImport Controchers.RoutesImport Play.api.mvc. {Filter, Dequekheader, Result, Résultats} Importer Scala.Concurrent.future@singletonclass SessionFilter @inject () (Implicit Val Mat: Materialze appliquer (nextFilter: requestHeader => futur [result]) (requestHeader: requestHeader): futur [result] = {if (! requestHeader.Session.get ("user"). Isdefine &&! requestHeader.path.contains ("/ signin") &&! requestheader.path.contains ("/ Assets /")) { Futur.successful (results.redirect (rotes.signController.showsignin ()))} else {nextFilter (requestHeader)}}}illustrer:
! requestHeader.Session.get ("utilisateur"). Isdefined est utilisé pour déterminer si un utilisateur existe dans la session
! requestHeader.path.contains ("/ Signin") est utilisé pour exclure la page de connexion. Cette page doit être visible si elle n'est pas connectée pour empêcher un saut en boucle morte.
! requestHeader.path.Contains ("/ Assets /") est utilisé pour exclure des fichiers de ressources statiques, tels que des images, CSS, JavaScript, etc.
2. Utiliser SessionFilter dans filters.scala dans le répertoire de l'application
Le fichier filters.scala est un modèle généré automatiquement par l'activater. Pour utiliser SessionFilter, ajoutez simplement SessionFilter: SessionFilter et SEQ (SessionFilter).
Importer javax.inject._IMPORT FILTERS. {ExampleFilter, SessionFilter} Importer play.api._import play.api.http.httpfiltersImport play.api.mvc ._ / ** * Cette classe configure des filtres qui s'exécutent à chaque demande. Cette classe * est interrogée par le jeu pour obtenir une liste de filtres. * * Play utilisera automatiquement les filtres à partir de toute classe appelée * `filtres` qui est placé le package racine. Vous pouvez charger des filtres * à partir d'une autre classe en ajoutant un paramètre `play.http.filters 'sur * le fichier de configuration` application.conf`. * * Paramètres d'environnement de base @param env de base pour l'application actuelle. * @param exampleFilter Un filtre de démonstration qui ajoute une en-tête à * chaque réponse. * / @ SingletOnclass Filters @Inject () (Environment, Environment, ExampleFilter: ExempleFilter, SessionFilter: SessionFilter) étend httpFilters {Override Val Filters = {// Utilisez l'exemple de filtre si nous exécutons le mode de développement. Si // nous fonctionnons en mode de production ou de test, n'utilisez aucun filtre //. if (Env.Mode == mode.dev) seq (exampleFilter) else seq.empty seq (sessionFilter)}}Ce qui précède est l'éditeur introduit pour jouer pour Scala pour implémenter le filtrage de SessionFilter. Les utilisateurs qui ne se sont pas connectés passent à la page de connexion. J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!