Używając @ before, jest używany tylko w jednej klasie. Jak zastosować filtr globalny w playframework? Tak więc jeden filtr jest używany dla wszystkich klas kontrolerów.Jak zastosować filtr globalny w playframework
Odpowiedz
Prostym rozwiązaniem jest rozszerzenie kontrolera podstawowego dla wszystkich kontrolerów i ustawienie @Before w kontrolerze bazowym.
Inną opcją (i lepszym rozwiązaniem, ponieważ jest bardziej elastyczna) jest użycie @ Adnotacji. Przykładem na dokumentacji Play jest
Przykład:
public class Secure extends Controller {
@Before
static void checkAuthenticated() {
if(!session.containsKey("user")) {
unAuthorized();
}
}
}
A na innym Kontroler:
@With(Secure.class)
public class Admin extends Application {
...
}
Oznacza to, że kontroler Administrator przetwarza wszystkie przechwytujących (@Before, @After @ Wreszcie) zawarte w bezpiecznym kontrolerze.
Niestety nadal wymaga to dodania adnotacji '@ With 'do wszystkich kontrolerów. Szczególnie w przypadku wtyczki Secure, lepiej byłoby móc domyślnie zabezpieczyć wszystkie kontrolery, a następnie dodać do białej listy te, które powinny być publicznie dostępne. Nie wiem jeszcze, jak to zrobić. –
zgodził się, nie podoba mi się tutaj rozwiązanie, ponieważ każdy programista musi pamiętać, a ludzkie zachowanie mówi, że w pewnym momencie zostanie zapomniane. –
Możesz po prostu użyć PlayPlugin dla tego problemu. Aby uzyskać więcej informacji, patrz here.
troska o opracowanie trochę? –
Przepraszam, że ostatnio się spieszyłem. Możesz znaleźć tu informacje: http://stackoverflow.com/questions/4515627/how-to-get-beforeactioninvocation-and-actiontervocation-to-be-called-in-play. Mam nadzieję, że znajdę czas, aby stworzyć bardziej wyczerpujące wyjaśnienie. – niels
zrobiłem tę samą rzecz przez obsługę przychodzących żądań globalnie w klasie GlobalSettings:
ten opisuje klasę: http://www.playframework.org/documentation/2.0/JavaGlobal
ten opisuje metodę, którą chcesz zastąpić. http://www.playframework.org/documentation/2.0/JavaInterceptors
Oto przykład jak użyłem go w moim projekcie (oczywiście, jest to uproszczona wersja tego, co szukasz):
@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);
}
To nie jest dobre rozwiązanie do rozszerzenia kontroler podstawowy dla wszystkich kontrolerów i mieć @Before w kontrolerze bazowym.
Można rozszerzyć filtr lub filtr szczelinowy .e.g.
klasa filtr1 rozciąga Filter {}
i stosowania filtr1 do globalnego
- 1. Globalny filtr właściwości w Jackson
- 2. Jak zastosować filtr do sygnału w pythonie
- 3. jak poprawnie zastosować filtr obrazu rdzenia
- 4. Jak programowo zastosować filtr wejściowy Drupal?
- 5. primefaces globalny filtr bez filtrów kolumnowych
- 6. Web API: Filtr "globalny" nie działa (ExceptionFilter)
- 7. Jak zarejestrować filtr globalny za pomocą mvc 6, asp.net 5
- 8. Jak zastosować filtr bezpieczeństwa sprężyn tylko w zabezpieczonych punktach końcowych?
- 9. Jak zastosować "filtr" w oparciu o wyrażenie regularne?
- 10. jqGrid na całkowitym obciążeniu zastosować filtr
- 11. Globalny filtr/zachowanie Yii2 zmuszające użytkownika do uwierzytelnienia najpierw
- 12. Jak zastosować filtr na wielu obiektach za pomocą AngularJS?
- 13. jak zastosować filtr serwletów tylko dla metody http post
- 14. Czy można umieścić filtr globalny poza p: dataTable?
- 15. ASP.net MVC filtr globalny autoryzacji zmuszając logowanie na działanie AllowAnonymous
- 16. HTML <input type = „file”> zastosować filtr
- 17. Czy mogę zastosować filtr CSS do obrazu tła?
- 18. Ustawienia przeglądarki w Playframework
- 19. Sesja obiektu w Playframework
- 20. Testuj WebSocket w PlayFramework
- 21. paginacja w playframework
- 22. Angular 2. Jak zastosować orderBy?
- 23. Jak znaleźć wersję projektu playframework?
- 24. Globalny moduł przechwytujący żądania/odpowiedzi
- 25. Jak zbudować moduł w playframework 2
- 26. Jak uruchomić próbkę playframework w Intelllijlinie 13?
- 27. Użycie Scala Future w Playframework?
- 28. Zastosuj filtr w FirebaseRecyclerAdapter
- 29. Playframework JsValue w szablonie HTML
- 30. Jak stworzyć globalny obiekt w C# biblioteki
Wiąże się to z moim pytaniem http://stackoverflow.com/questions/4597766/easy-way-to-use-secure- moduły lub podobne do wszystkich kontrolerów w grze. Próbowałem użyć wzmacniacza kodu bajtowego, aby dodać adnotację '@ With' do wszystkich kontrolerów, ale to doprowadziło mnie do tego pytania: http://stackoverflow.com/questions/4608883/problem-with-classes-not-found-during -playplugin-enhance –
http://www.playframework.com/documentation/2.1.0/ScalaInterceptors – ThePizzle