我在Tomcat的web.xml中使用基于表单的身份验证。
<login-config>
<auth-method>FORM</auth-method>
<realm-name>Example Form-Based Authentication Area</realm-name>
<form-login-config>
<form-login-page>/LoginServlet</form-login-page>
<form-error-page>/LoginServlet</form-error-page>
</form-login-config>
</login-config>
在我的WebApp中,我有一个页面“Action.jsp”和一个过滤器(MyFilter.java)。我在MyFilter中打印用户名和会话ID的值。当会话超时时,将打开页面action.jsp,并在过滤器日志中将username显示为null。但它不会重定向到登录页面。 可能是什么问题?
LoginServlet只是重定向到登录页面。
response.sendRedirect(response
.encodeRedirectURL("/WebFwCore/web/pages/main.jsp"));
在过滤器中我正在打印
request.getRemoteUser();
request.isUserInRole('something');
即将出现 并在web.xml中
<web-resource-name>View pages</web-resource-name>
<url-pattern>/jsp/ann/ann_main.jsp</url-pattern>
<url-pattern>/jsp/ann/ann_tcu.jsp</url-pattern>
<url-pattern>/jsp/ann/import_ann_files.jsp</url-pattern>
<url-pattern>/jsp/dtmf/dtmf.jsp</url-pattern>
<url-pattern>/jsp/languagetah/languagetag.jsp</url-pattern>
<url-pattern>/jsp/languagetah/action.jsp</url-pattern>
<url-pattern>/jsp/languagetah/languagetag_load_result.jsp</url-pattern>
<url-pattern>/jsp/languagetah/languagetag_load_error_detail.jsp</url-pattern>
<url-pattern>/jsp/tone/tone.jsp</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>fsNetworkingView</role-name>
<role-name>fsNetworkingManage</role-name>
<role-name>fsWebUIAllowAll</role-name>
</auth-constraint>
答案 0 :(得分:0)
在LoginServlet中
使用Request
request.getSession(false);
的会话
如果session为null,则重定向到loginpage
在检查请求之前,请务必检查会话,因为请求可以是新的(与auth一起),但之前对哪个会话有限的请求可能已过期
或者,您可以使用会话监听器来限制会话到期时间,并根据应用需求采取相应措施。