Al usar @before, solo se usa en una clase. ¿Cómo aplico un filtro global en playframework? Entonces ese filtro se usa para todas las clases de controlador.Cómo aplicar un filtro global en playframework
Respuesta
Una solución simple es extender un controlador base para todos sus controladores y tener el @Before en el controlador base.
La otra opción (y la mejor solución, ya que es más flexible) es usar la anotación @With. El ejemplo de la documentación juego es
Ejemplo:
public class Secure extends Controller {
@Before
static void checkAuthenticated() {
if(!session.containsKey("user")) {
unAuthorized();
}
}
}
Y en otro controlador:
@With(Secure.class)
public class Admin extends Application {
...
}
Esto significa que el controlador de administración procesará todos los interceptores (@Before, @After, @ Finalmente) contenido dentro del controlador seguro.
Desafortunadamente, esto todavía requiere que agregue la anotación '@ With' a todos los controladores. Particularmente en el caso del plugin Secure, sería preferible poder asegurar todos los controladores de forma predeterminada y luego incluir en la lista blanca aquellos que deberían ser de acceso público. Aunque no he descubierto cómo hacerlo. –
de acuerdo, no me gusta la solución aquí, ya que todo desarrollador debe recordar y el comportamiento humano dice que será olvidado en algún momento. –
Simplemente puede usar PlayPlugin para este problema. Vea here para más detalles.
cuidado para elaborar un poco? –
Lo siento, tuve prisa la última vez. Puede encontrar información aquí: http://stackoverflow.com/questions/4515627/how-to-get-beforeactioninvocation-and-afteractioninvocation-to-belement-in-play. Espero que encuentre tiempo para crear una explicación más completa. – niels
me hicieron esto mismo por el manejo de peticiones de entrada a nivel mundial en la clase GlobalSettings:
Esto describe la clase: http://www.playframework.org/documentation/2.0/JavaGlobal
Esto describe el método que le desea anular. http://www.playframework.org/documentation/2.0/JavaInterceptors
Aquí hay un ejemplo de como lo he usado en mi propio proyecto (por supuesto, esta es una versión simplificada de lo que estás buscando):
@Override
public play.mvc.Action onRequest(play.mvc.Http.Request request, java.lang.reflect.Method method) {
if (request.path().startsWith("/secret/locked")) {
return new Action.Simple() {
@Override
public Result call(play.mvc.Http.Context ctx) throws Throwable {
return redirect(routes.Application.forbidden());
}
};
}
return super.onRequest(request, method);
}
No es una buena solución para extender un controlador base para todos sus controladores y tiene el @Before en el controlador base.
Puede ampliar el filtro o el filtro essensial .e.g.
filtro1 clase extiende filtro {}
y aplicar filtro1 a Global
- 1. Reemplazando un filtro de acción global
- 2. Doctrine2: Aplicar un filtro a una asociación
- 3. Filtro de propiedad global en Jackson
- 4. Filtro de acción global en ASP.NET MVC
- 5. Filtro de servlet - No aplicar filtro a uno específico
- 6. ¿Cómo construir un módulo en playframework 2
- 7. HTML <input type = 'archivo'> aplicar un filtro
- 8. Uso de Automapper para aplicar un filtro a una colección
- 9. ¿Puede un DbContext aplicar una política de filtro?
- 10. Cómo aplicar la fuente global a todo el documento HTML
- 11. cómo aplicar correctamente el filtro de imagen principal
- 12. Error de registro de filtro global en MVC 3 RC
- 13. Cómo borrar un filtro - AngularJS
- 14. Makefile: Cómo aplicar un equivalente para filtrar en varios comodines
- 15. filtro global de las primefaces sin los filtros de columna
- 16. la paginación en playframework
- 17. ¿Cómo usar Scala Secure Trait en PlayFramework?
- 18. Cómo comprimir html con PlayFramework
- 19. Cómo heredar un modelo de la superclase en playframework
- 20. Cómo manejar excepciones en un bloque playframework 2 asíncrono (Scala)
- 21. sesión de objeto en playframework
- 22. Cómo configurar eclipse-ide en playframework 2.0
- 23. Debug Playframework 2.0 en Eclipse
- 24. MVC3 globalización: necesita filtro global antes del enlace
- 25. ASP.NET MVC 3 e inyección de filtro global
- 26. Web API: el filtro 'Global' no funciona (ExceptionFilter)
- 27. ¿Es posible colocar el filtro global fuera de p: dataTable?
- 28. CloudBees + PlayFramework + Eclipse
- 29. Filtro Gaussiano en un vector en Matlab
- 30. Playframework run y Global.onStart
Esto se relaciona con mi pregunta http://stackoverflow.com/questions/4597766/easy-way-to-use-secure- module-or-similar-on-all-controllers-in-play. Traté de usar un mejorador de bytecode para agregar una anotación '@ With' a todos los controladores, pero eso me llevó a esta pregunta: http://stackoverflow.com/questions/4608883/problem-with-classes-not-found-during -playplugin-enhance –
http://www.playframework.com/documentation/2.1.0/ScalaInterceptors – ThePizzle