[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-servlety-kakoy-sushchestvuet-effektivnyy-sposob-proverit-chto-vse-servlety-dostupny-tolko-dlya-polzovatelya-s-vernoy-sessiey":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},560,"kakoy-sushchestvuet-effektivnyy-sposob-proverit-chto-vse-servlety-dostupny-tolko-dlya-polzovatelya-s-vernoy-sessiey",13,"servlety","Сервлеты","🖧","Какой существует эффективный способ проверить что все сервлеты доступны только для пользователя с верной сессией","Сервлетный фильтр (Filter) — наиболее эффективный способ централизованной проверки сессии для всех запросов. Фильтр перехватывает каждый запрос до того, как он достигнет сервлета, и может проверить наличие и валидность сессии.\n\n```java\n@WebFilter(\"\u002F*\")\npublic class SessionCheckFilter implements Filter {\n    @Override\n    public void doFilter(ServletRequest req, ServletResponse resp,\n                         FilterChain chain) throws IOException, ServletException {\n        HttpServletRequest httpReq = (HttpServletRequest) req;\n        HttpSession session = httpReq.getSession(false);\n        String uri = httpReq.getRequestURI();\n\n        if (session != null || uri.contains(\"\u002Flogin\")) {\n            chain.doFilter(req, resp); \u002F\u002F пропустить дальше\n        } else {\n            ((HttpServletResponse) resp).sendRedirect(\"\u002Flogin\");\n        }\n    }\n}\n```\n\nФильтр маппится на `\u002F*` (все URL) и пропускает только запросы к странице логина и запросы с валидной сессией. Это паттерн «intercepting filter», который в Spring Security реализован через `SecurityFilterChain` с более гибкой конфигурацией.\n\n> **На собеседовании:** назовите фильтр как решение и упомяните, что в Spring Security вся аутентификация и авторизация построена на цепочке фильтров. Не нужно писать свой фильтр — Spring Security делает это лучше.","","middle",[15],"servlets",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Какой существует эффективный способ проверить что все сервле — Gymterview","Сервлетный фильтр (Filter) — наиболее эффективный способ централизованной проверки сессии для всех запросов. Фильтр перехватывает каждый запрос до того, как он ","Сервлетный фильтр (Filter) — наиболее эффективный способ централизованной проверки сессии для всех запросов. Фильтр пере",[15,13],"Сервлетный фильтр (Filter) — наиболее эффективный способ централизованной проверки сессии для всех запросов. Фильтр перехватывает каждый запрос до того, как он достигнет сервлета, и может проверить наличие и валидность сессии.",true]