gaf*_*fcz 2 jsf web.xml servlets session-timeout programmatic-config
我可以在定义的不活动时间后注销用户。
<session-timeout>240</session-timeout>
Run Code Online (Sandbox Code Playgroud)
但是,是否有某种方法可以在指定时间或更好的情况下注销,例如直到指定时间后 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);
}
Run Code Online (Sandbox Code Playgroud)
在 JSF 托管 bean 中,会话可通过ExternalContext#getSession()以下方式获得:
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession();
// ...
Run Code Online (Sandbox Code Playgroud)
或者,当您已经使用 JSF 2.1 时,您还可以使用ExternalContext#setSessionMaxInactiveInterval()委托给该方法的新方法。
| 归档时间: |
|
| 查看次数: |
3254 次 |
| 最近记录: |