1. Escribir SessionFilter.scala Code
package filtersimport javax.inject.{Inject, Singleton}import akka.stream.Materializerimport controllers.routesimport play.api.mvc.{Filter, RequestHeader, Result, Results}import scala.concurrent.Future@Singletonclass SessionFilter @Inject()(implicit val mat: Materializer) extends Filter { def apply(nextFilter: Requestheader => futuro [resultado]) (requestheader: requestheader): futuro [resultado] = {if (! Requestheader.session.get ("user"). Isdefine &&! Requitsheader.path.contains ("/firmin") &&! Request.path.contains ("/assets/")) { Futuro.successful (results.redirect (rutas.signController.showsignin ()))} else {nextFilter (requestheader)}}}ilustrar:
! requestheader.session.get ("usuario"). IsDefined se usa para determinar si existe un usuario en la sesión
! requestheader.path.contains ("/firmin") se usa para excluir la página de inicio de sesión. Esta página debe ser visible si no se registra, para evitar un salto de bucle muerto.
! requestheader.path.contains ("/assets/") se usa para excluir archivos de recursos estáticos, como imágenes, CSS, JavaScript, etc.
2. Use SessionFilter en filtros.scala en el directorio de aplicaciones
El archivo Filters.Scala es una plantilla generada automáticamente por el activador. Para usar SessionFilter, simplemente agregue SessionFilter: SessionFilter y SEQ (SessionFilter).
import javax.inject._import Filters. {EjemploFilter, SessionFilter} import Play.api._import Play.api.http.httpfiltersImport Play.api.mvc ._/*** Esta clase configura filtros que se ejecutan en cada solicitud. Esta clase * se consulta por el juego para obtener una lista de filtros. * * Play usará automáticamente filtros de cualquier clase llamada * `Filtres 'que se coloque el paquete root. Puede cargar filtros * de una clase diferente agregando una configuración `play.http.filters` a * el archivo de configuración` Application.Conf`. * * @Param Env Entendación de entorno básico para la aplicación actual. * @param EjemploFilter Un filtro de demostración que agrega un encabezado a * cada respuesta. */ @Singletonclass filtrs @Inject () (env: entorno, ejemplofilter: ejemplofilter, sessionFilter: sessionFilter) extiende httpfilters {anulación val filtros = {// Use el filtro de ejemplo si estamos ejecutando el modo de desarrollo. Si // estamos ejecutando en modo de producción o prueba, no use ninguno // filtros en absoluto. if (env.mode == mode.dev) seq (ejemplofilter) else seq.empty seq (sessionFilter)}}Lo anterior es el editor introducido para jugar para Scala para implementar el filtrado de SessionFilter. Los usuarios que no han iniciado sesión en la página de inicio de sesión. Espero que sea útil para todos. Si tiene alguna pregunta, déjame un mensaje y el editor responderá a todos a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!