Я могу выйти из системы после определенного времени бездействия.
<session-timeout>240</session-timeout>
Но есть ли способ выйти из системы в указанное время или лучше, например, до 5 минут бездействия после указанного времени?
Я могу выйти из системы после определенного времени бездействия.
<session-timeout>240</session-timeout>
Но есть ли способ выйти из системы в указанное время или лучше, например, до 5 минут бездействия после указанного времени?
Время ожидания сеанса можно изменить с помощью HttpSession#setMaxInactiveInterval()
где вы можете указать желаемое время ожидания в секундах.
Если вы хотите охватить широкий спектр запросов для этого, например. все страницы в папке /admin
или что-то в этом роде, то лучше всего это сделать, создав Filter
, который сопоставляется с FacesServlet
и выполняет примерно следующую работу:
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest) req;
HttpSession session = request.getSession();
if (request.getRequestURI().startsWith("/admin/")) {
session.setMaxInactiveInterval(60 * 5); // 5 minutes.
} else {
session.setMaxInactiveInterval(60 * 240); // 240 minutes.
}
chain.doFilter(req, res);
}
В управляемом компоненте JSF сеанс доступен по ExternalContext#getSession()
:
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession();
// ...
Или, если вы уже используете JSF 2.1, вы также можете использовать новый ExternalContext#setSessionMaxInactiveInterval()
, который делегирует именно этот метод.
Автоматически - нет.
Вам нужно будет:
Set
. Сделайте это в HttpSessionListener
, когда они будут созданы..invalidate()
их(true)
для getSession. Кроме этого - да.
- person Bozho; 30.05.2011
То, что Божо дал вам, верно, то, что вы видите, скорее всего, это то, что когда вы нажимаете кнопку выхода из системы, сеанс уничтожается, но затем контейнер сервлета направляется на страницу «после выхода из системы», что автоматически вызывает сеанс быть созданным (отсюда «Сеанс уничтожен», за которым следует «Сеанс создан»).
Если не считать создания собственной системы обработки сеансов, я не знаю, как вы это обойдете. (У меня была эта проблема в прошлом, и она исчезла после того, как мы создали нашу собственную систему сеансов)
<session-timeout>
с 240 минут до 5 минут. - person BalusC   schedule 30.05.2011