У меня есть простой случай использования, когда я хочу получить переменную сеанса в начале сеанса и разрешить доступ только к определенным страницам на основе результата. Я не совсем уверен, лучше ли это использовать bindInterceptor для перехвата любого метода @Get или @Post на любой странице или лучше использовать фильтр. Вот набросок того, что я хотел бы сделать, но я открыт для альтернатив:
At the start of a new session (@SessionScoped ?), check a session variable authentication token
If (authentication == admin) {
serveRegex("admin/(jsp|html)/.*").with(GuiceContainer.class); //only allow /admin subpages
req.getRequestDispatcher("/admin").forward(req, res); //fwd all initial page requests to /admin
}
else If (authentication == user) {
serveRegex("user/(jsp|html)/.*").with(GuiceContainer.class); //only allow /user subpages
req.getRequestDispatcher("/user").forward(req, res); //fwd all initial page requests to /user
}
else {
serveRegex("signin/(jsp|html)/.*").with(GuiceContainer.class); //only allow /signin subpages
req.getRequestDispatcher("/signin").forward(req, res); //fwd all initial page requests to /signin
}
Какой метод является предпочтительным подходом (наименьший код, самый быстрый и т. Д.) Для управления этой моделью безопасности? Я хотел бы увидеть пример проекта.
Спасибо за вашу помощь!
-John