2013-04-13 3 views
1

Я использую защиту на основе контейнеров в своем приложении jsf (j_security) с использованием Glassfish для аутентификации пользователей для защищенных страниц. Однако в приложении у меня есть более ограниченные страницы, которые требуют повторного ввода паролей, даже когда пользователь вошел в систему. Создание нескольких ограничений не помогло бы, поскольку сеанс уже включен.Security double check

Как это можно сделать?

ответ

1

Вы можете использовать фильтр сервлета, например, «SecondAuth», в котором вы можете проверить, прошел ли пользователь уже второй раз или нет, указав флаг сеанса; а если нет, вы можете перенаправить на вторую страницу аутентификации. Не забудьте сохранить запрошенный URL в переменной сеанса. После успешной аутентификации пользователя вы можете перенаправить на запрошенную страницу.

Вы можете защитить несколько страниц с использованием конфигурации web.xml, как показано ниже:

web.xml

<filter> 
    <filter-name>secondauth</filter-name> 
    <filter-class>com.auth.SecondAuth</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>secondauth</filter-name> 
    <url-pattern>/app/secure1.jsp</url-pattern> 
    <url-pattern>/app/secure2.jsp</url-pattern> 
</filter-mapping> 

Для как использовать сервлет фильтр, который вы можете обратиться к How to use a servlet filter in Java to change an incoming servlet request url?