powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Autowire в Servlet filter
25 сообщений из 27, страница 1 из 2
Autowire в Servlet filter
    #39164990
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет. Есть фильтр:
public class MyFilter implements Filter {
@Autowired
private MyAuthService service;
Есть несколько видов бизнес-объектов:Driver,Client,Admin
В каждой сущности есть логин, пароль, id и т.д.
Для того, чтобы сработал autowired в фильтре, я пишу:

Код: java
1.
public void init(FilterConfig filterConfig) throws ServletException { ServletContext servletContext = filterConfig.getServletContext(); WebApplicationContext webApplicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext); AutowireCapableBeanFactory autowireCapableBeanFactory = webApplicationContext.getAutowireCapableBeanFactory(); autowireCapableBeanFactory.configureBean(this, MyAuthService.class); }



В MyAuthService находится метод для получения юзера по логину и паролю, но, проблема в том, что я не знаю какой пользователь логинится, соответственно не понятно какой repository использовать:
clientRepository.findByLoginAndPassword() или driverRepository.findByLoginAndPassword() или adminRepository.findByLoginAndPassword()
Прокомментируйте пожалуйста. Спасибо
...
Рейтинг: 0 / 0
Autowire в Servlet filter
    #39164993
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://findevelop.blogspot.ru/2013/10/web-spring-security-100.html
мне это понравилось простотой
...
Рейтинг: 0 / 0
Autowire в Servlet filter
    #39165877
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно ли я понимаю, что спринговые интерцепторы, это по сути те же сервлет фильтры, с той лишь разницей, что интерцепторы работают в рамках спринг-контейнера(а значит имеем поддержку всяких @Autowire без костылей типа AutowireCapableBeanFactory), а фильтры в рамках веб-контейнера типа томкат, или джетти?
...
Рейтинг: 0 / 0
Autowire в Servlet filter
    #39165974
pavel_nv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не ошибаюсь, то спринговый @Component можно пометить аннотацией @WebFilter и он автоматом засеттится как фильтр
...
Рейтинг: 0 / 0
Autowire в Servlet filter
    #39166065
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pavel_nvЕсли не ошибаюсь, то спринговый @Component можно пометить аннотацией @WebFilter и он автоматом засеттится как фильтр
Спасибо, но вопрос не об этом. Мне нужно понять разницу между фильтрами и интерцепторами, и при каких условиях использовать тот или иной механизм
...
Рейтинг: 0 / 0
Autowire в Servlet filter
    #39166640
mrWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Autowire в Servlet filter
    #39192682
skywriter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя http://findevelop.blogspot.ru/2013/10/web-spring-security-100.html
мне это понравилось простотой
А что в этом хорошего (ну кроме как учебного примера изпользования фильтров)?
1) маски URL захардкожены:
private class Rule {
public static final String USER_ANY = "*";
public static final String URL_ANY = "/*";
2) файл с правами разположен в папке с классами (read-only? modify on redeploy?):
@Override
public void init(FilterConfig filterConfig) throws ServletException {
BufferedReader res = new BufferedReader(new InputStreamReader(filterConfig.getServletContext().getResourceAsStream("/WEB-INF/classes/users.txt")));
3) права заданы в файле, а не в БД;
4) не реализованы другие способы авторизации, как, н-р, LDAP или сторонний сервис;
5) не предусмотрены группы;
6) нет защиты против CSRF-аттак.
А если всё это изправлять, то чем оно будет лучше изпользования Spring Security?

По-моему, данная статья как нельзя лучше подтверждает тезис, который в автор пытается опровергнуть:
"Нельзя делать свои велосипеды! Надо использовать проверенные и отлаженные библиотеки!"
...
Рейтинг: 0 / 0
Autowire в Servlet filter
    #39192684
skywriter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
7) форма захардкожена в фильтре:
PrintWriter out = resp.getWriter();
out.print("<html><body><form method=\"POST\" action=\"" + uri + "\">\n" +
"<input type=\"text\" name=\""+PARAM_LOGIN+"\" placeholder=\"Login\"><br/>\n" +
"<input type=\"password\" name=\""+PARAM_PASS+"\" placeholder=\"Password\"><br/>\n" +
"<input type=\"submit\" value=\"Login\" />\n" +
"</form></body></html>");
out.flush();
out.close();

Это уже разместили на говнокод.ру?
...
Рейтинг: 0 / 0
Autowire в Servlet filter
    #39192714
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skywriter1) маски URL захардкожены:
2) файл с правами разположен в папке с классами (read-only? modify on redeploy?)
3) права заданы в файле, а не в БД;
4) не реализованы другие способы авторизации, как, н-р, LDAP или сторонний сервис;
5) не предусмотрены группы;
6) нет защиты против CSRF-аттак.
7) форма захардкожена в фильтре


Где-то на форуме я такой стиль уже видел...
...
Рейтинг: 0 / 0
Autowire в Servlet filter
    #39193075
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skywriterвадя http://findevelop.blogspot.ru/2013/10/web-spring-security-100.html
мне это понравилось простотой
А что в этом хорошего (ну кроме как учебного примера изпользования фильтров)?
1) маски URL захардкожены:
private class Rule {
public static final String USER_ANY = "*";
public static final String URL_ANY = "/*";
2) файл с правами разположен в папке с классами (read-only? modify on redeploy?):
@Override
public void init(FilterConfig filterConfig) throws ServletException {
BufferedReader res = new BufferedReader(new InputStreamReader(filterConfig.getServletContext().getResourceAsStream("/WEB-INF/classes/users.txt")));
3) права заданы в файле, а не в БД;
4) не реализованы другие способы авторизации, как, н-р, LDAP или сторонний сервис;
5) не предусмотрены группы;
6) нет защиты против CSRF-аттак.
А если всё это изправлять, то чем оно будет лучше изпользования Spring Security?

По-моему, данная статья как нельзя лучше подтверждает тезис, который в автор пытается опровергнуть:
"Нельзя делать свои велосипеды! Надо использовать проверенные и отлаженные библиотеки!"
ты дурак.
это предложена идея
которую можно развить.
выложи свою критику автору и не оффтопь здесь
...
Рейтинг: 0 / 0
Autowire в Servlet filter
    #39193084
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. SakГде-то на форуме я такой стиль уже видел..
))
...
Рейтинг: 0 / 0
Autowire в Servlet filter
    #39193087
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяты дурак.
он не нарушил правила, а говорил техническим языком. Ты сказал языком кухарки. Т.е. перешёл на личности.
...
Рейтинг: 0 / 0
Autowire в Servlet filter
    #39193138
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадяты дурак.
он не нарушил правила, а говорил техническим языком. Ты сказал языком кухарки. Т.е. перешёл на личности.
я так понимаю, что обсирать чужой код - это спецкурс при обучении java. и нетерпммость к чужому коду это верх. пусть он и техническим языком, но он обосрал, чужой код, чужое мнение, а это просто не прилично
...
Рейтинг: 0 / 0
Autowire в Servlet filter
    #39193153
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя!
правила форума давно читал?
Он так писать как ты может, а ты как он нет (я так подумал).
Обсирай его код. Только техническим языком.
Удачи!
ЗЫ
школьников после вуза всё больше...и критики тоже - имей ввиду).
...
Рейтинг: 0 / 0
Autowire в Servlet filter
    #39193255
skywriter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяты дурак.
это предложена идея
которую можно развить.
выложи свою критику автору и не оффтопь здесь
skywriterА если всё это изправлять, то чем оно будет лучше изпользования Spring Security?
...
Рейтинг: 0 / 0
Autowire в Servlet filter
    #39193260
skywriter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя...он обосрал, чужой код, чужое мнение, а это просто не прилично
Не только прилично, но и необходимо .
...
Рейтинг: 0 / 0
Autowire в Servlet filter
    #39193339
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skywriterА что в этом хорошего (ну кроме как учебного примера изпользования фильтров)?
1) маски URL захардкожены:
private class Rule {
public static final String USER_ANY = "*";
public static final String URL_ANY = "/*";
2) файл с правами разположен в папке с классами (read-only? modify on redeploy?):
@Override
public void init(FilterConfig filterConfig) throws ServletException {
BufferedReader res = new BufferedReader(new InputStreamReader(filterConfig.getServletContext().getResourceAsStream("/WEB-INF/classes/users.txt")));
3) права заданы в файле, а не в БД;
4) не реализованы другие способы авторизации, как, н-р, LDAP или сторонний сервис;
5) не предусмотрены группы;
6) нет защиты против CSRF-аттак.
А если всё это изправлять, то чем оно будет лучше изпользования Spring Security?

По-моему, данная статья как нельзя лучше подтверждает тезис, который в автор пытается опровергнуть:
"Нельзя делать свои велосипеды! Надо использовать проверенные и отлаженные библиотеки!"
человек привел пример что можно сделать...
придираться - это не есть хороший тон.
если тебе не нравится "маски URL захардкожены" это не означает, что это не правильно.
где расположен файл- тебя не нравится - можешь , расположить там , где понравится...
права заданы там , где автор посчитал для себя приемлимым, не нравится - ни кто не заставляет, используй свой вариант
4) а автору это надо было?
5) а автору это надо было?
6) нет и защиты от других атак.
всё на уровне "мне не нравится"
я не использую Spring Security, но на основании этого решения , сделал и защиту, и права из базы, и прочие вещи.
и без Spring Security....
...
Рейтинг: 0 / 0
Autowire в Servlet filter
    #39193376
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulTpavel_nvЕсли не ошибаюсь, то спринговый @Component можно пометить аннотацией @WebFilter и он автоматом засеттится как фильтр
Спасибо, но вопрос не об этом. Мне нужно понять разницу между фильтрами и интерцепторами, и при каких условиях использовать тот или иной механизм
IMHO
тут важнее правило архитектуры - не мешать стили и технологии.
- если есть в проекте спринг - делать на нём
- нет спринга - делать на фильтрах которые маркируются в web.xml
У меня один проект SSO от крупной компании. У них втрой вариант.
...
Рейтинг: 0 / 0
Autowire в Servlet filter
    #39193390
skywriter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадячеловек привел пример что можно сделать...

Нет, он не просто привёл пример, что можно сделать. Он начал с порицания практики отказа от "велосипедостроения" и сказал:
автор...покажу решение, которое писать быстрее, проще и легче сопровождать, хотя оно и является классическим "велосипедом" :)
Данное решение является классическим "велосипедом", а на этом форуме ссылка на данную статью встречается как минимум 3 раза. А способность фильтровать контент, как показывает практика, не у всех развита, так что весьма вероятно перетекание в производственную практику.

Как "велосипед" оно годится, но... " проще и легче сопровождать "? Проще и легче для кого? Для автора велосипеда? Так велосипеды потому (а порой и для_того ) и пишут, что автору бывает их проще написать и/или сопровождать. Н-р, я однажды имел дело с падающим через несколько часов работы приложением, в котором был применён самописный логгер, который начинал тормозить при разрастании файла. Вопрос, будет ли "велосипеды" проще сопровождать команде? Сделает ли это продукт надёжнее? Для ответов на эти вопросы должны быть более веские аргументы, чем "я просто хочу запилить свой велосипед, just because I can".
...
Рейтинг: 0 / 0
Autowire в Servlet filter
    #39193829
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123JulTпропущено...

Спасибо, но вопрос не об этом. Мне нужно понять разницу между фильтрами и интерцепторами, и при каких условиях использовать тот или иной механизм
IMHO
тут важнее правило архитектуры - не мешать стили и технологии.
- если есть в проекте спринг - делать на нём
- нет спринга - делать на фильтрах которые маркируются в web.xml
У меня один проект SSO от крупной компании. У них втрой вариант.
Спасибо)
...
Рейтинг: 0 / 0
Autowire в Servlet filter
    #39194001
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulTПравильно ли я понимаю Servlet Filter - работает только с входящими запросами,
а Interceptor - как паттерн , может перехватывать в обоих направлениях
(идея Interceptor'ов используется шире, не только для HTTP-запросов)
имхо
...
Рейтинг: 0 / 0
Autowire в Servlet filter
    #39194018
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman Servlet Filter - работает только с входящими запросами,
а Interceptor - как паттерн , может перехватывать в обоих направлениях
(идея Interceptor'ов используется шире, не только для HTTP-запросов)
имхо

А по той же ссылке: An example of implementation of this pattern is the javax.servlet.Filter interface, which is part of Java Platform, Enterprise Edition.
...
Рейтинг: 0 / 0
Autowire в Servlet filter
    #39194032
skywriter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuITВ MyAuthService находится метод для получения юзера по логину и паролю, но, проблема в том, что я не знаю какой пользователь логинится, соответственно не понятно какой repository использовать:
clientRepository.findByLoginAndPassword() или driverRepository.findByLoginAndPassword() или adminRepository.findByLoginAndPassword()
Прокомментируйте пожалуйста. Спасибо
Если это разные типы клиентов, то я бы попытался перед аутентификацией определить тип клиента:
1) по параметру запроса (если клиент шлёт специфический параметр запроса или если можно заставить его это делать);
2) по URL (н-р, /login1, /login2);
3) по IP-адресу или доменному имени клиента (если разные типы клиентов шлют запросы с разных доменов или с разных IP-адресов).
...
Рейтинг: 0 / 0
Autowire в Servlet filter
    #39194089
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ТС, я тебя понимаю )) тоже по дурости один проект запилил с авторизацией на интерцепторах. это был такущий геморрой, с неясными и неочевидными глюками, бесконечная борьба с ними и ужасная конфигурация всей этой конструкции (хотя тут конечно же моя вина - сам дурак костылей понаделал). сразу скажу - забей на этот велосипед и пользуйся человеческими уже придуманными вещами навроде спринг сесурити. сэкономишь кучу нервов и времени. поверь, его освоить проще чем городить забор из интерцепторов.
...
Рейтинг: 0 / 0
Autowire в Servlet filter
    #39194101
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
по теме, я не совсем понял вопроса, но если хочешь автовайридь и речь о спринге то помечай интерцептор аннотацией компонент, оформляй его бином, а потом уже инжекти туда что хочешь.

у меня было как то так:

это конфиг:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@Override

    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(localInterceptor());
    }

    @Bean
    public LocalInterceptor localInterceptor(){

        return new LocalInterceptor();
    }



это интерцептор:

Код: java
1.
2.
3.
4.
5.
@Component
public class LocalInterceptor implements HandlerInterceptor {

    @Autowired
    private AuthorizationService authorizationService;



дальше уже там прехандлы-постхандлы потрошишь.

по айпи авторизацию делать это тухлый номер сразу говорю. если из-под ната сидят у тебя будет 10 человек с 1 айпи.
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Autowire в Servlet filter
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]