Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Написание фильтра, Написание фильтра уровней доступа 
:(
    Опции темы
xpvit
Дата 10.12.2006, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 10.10.2006

Репутация: 1
Всего: 1



Существует Struts приложение с кучей Actions и JSP. В системе существует 2 принципиально различных группы пользователей (Учитель, ученик). У них свои Actions и JSP. Помогите или расскажите как написать фильтр который не позволить Им заходить не в свои области, и ещё не позволит заходить в систему не залогинившись. Насколько я понимаю это надо писать класс имплементящий javax.servlet.Filter. Но вот далее пока не ясно. Спасибо за помощь.
PM MAIL   Вверх
tux
Дата 10.12.2006, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



На самом деле все довольно просто. Пишем класс фильтра:
Код

public class CheckLoginFilter implements javax.servlet.Filter {
    private String errorLink;

    public void destroy() {
    }

    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest) request;
        String uri = httpRequest.getRequestURI();
        if (пользователь не имеет права на просмотр страницы)
            httpRequest.getRequestDispatcher(errorLink).forward(request, response);
        else
            filterChain.doFilter(request, response);
    }

    public void init(FilterConfig filterConfig) throws ServletException {
        errorLink = filterConfig.getInitParameter("loginPage");
    }

}

Теперь описываем этот фильтр в web.xml:
Код

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
    <filter>
        <filter-name>CheckFilter</filter-name>
        <filter-class>CheckLoginFilter</filter-class>
        <init-param>
            <param-name>errorPage</param-name>
            <param-value>/template/error.jsp</param-value>
        </init-param>
    </filter>
    
    <filter-mapping>
        <filter-name>CheckFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

PM MAIL Skype GTalk Jabber YIM   Вверх
xpvit
Дата 11.12.2006, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 10.10.2006

Репутация: 1
Всего: 1



А если надо контролировать кучу вещей. То есть Пользователь должен иметь право просмотра страницы, и важно ещё с какой страницы он пришёл. То целесообразно написание кучи фильтров??
tux, Спасибо.
PM MAIL   Вверх
tux
Дата 11.12.2006, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Цитата(xpvit @  11.12.2006,  15:04 Найти цитируемый пост)
А если надо контролировать кучу вещей. То есть Пользователь должен иметь право просмотра страницы, и важно ещё с какой страницы он пришёл. То целесообразно написание кучи фильтров??

А зачем? Неужели нельзя все политики доступа контролировать в одном фильтре? 
PM MAIL Skype GTalk Jabber YIM   Вверх
xpvit
Дата 12.12.2006, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 10.10.2006

Репутация: 1
Всего: 1



Mozhet kto podskazhesh pochemu na link http://localhost:8080/PMSystem/teacher/createMessage.do
 <url-pattern>/*createMessage.do</url-pattern> Ne srabatyvaet.... to est' ne zahodit v Filter.
Sorry for translit.
PM MAIL   Вверх
tux
Дата 12.12.2006, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Это что за ужос?
Код

<url-pattern>/*createMessage.do</url-pattern>

Если это маппинг фильтра, опиши его так:
Код

<filter-mapping>
    <filter-name>CheckFilter</filter-name>
    <url-pattern>*.do</url-pattern>
</filter-mapping>

Ну или хотя бы так:
Код

<filter-mapping>
    <filter-name>CheckFilter</filter-name>
    <url-pattern>createMessage.do</url-pattern>
</filter-mapping>

PM MAIL Skype GTalk Jabber YIM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0451 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.