Навигационный обработчик JSF2 - PullRequest
1 голос
/ 16 декабря 2011

Мы используем JSF2 и используем Navigation Handler для управления навигацией между открытыми и защищенными страницами нашего веб-приложения.

Логика стала настолько сложной, что нам нужно проверить, какая страница является безопасной и какая страницаявляется общедоступным.

Существует ли какой-либо фреймворк или лучший способ обработки обработчика навигации ...

1 Ответ

2 голосов
/ 16 декабря 2011

Обычно вы помещаете защищенные страницы в общий путь URL, такой как /app/*, /secured/*, /private/* и т. Д. Таким образом, вы можете использовать одну точку входа для управления доступом.Если вы используете безопасность, управляемую контейнером , тогда нужно указать правильный шаблон URL:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Restricted pages</web-resource-name>
        <url-pattern>/secured/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>*</role-name>
    </auth-constraint>
</security-constraint>

Если вы, тем не менее, используете доморощенную защиту, вам необходимо реализовать Filter для этого вместо:

@WebFilter("/secured/*")
public class AuthorizationFilter implements Filter {
    // ...
}

или если вы еще не используете Servlet 3.0, зарегистрируйте его следующим образом вместо использования @WebFilter:

<filter>
    <filter-name>authorizationFilter</filter-name>
    <filter-class>com.example.AuthorizationFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>authorizationFilter</filter-name>
    <url-pattern>/secured/*</url-pattern>
</filter-mapping>

Внутри метода doFilter() вам нужно написать код, который проверяет, вошел ли пользователь в систему или нет, а затем продолжает цепочку или перенаправляет ответ на страницу входа (которая сама по себе, конечно, не покрываетсяШаблон URL).

См. Также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...