有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

基于java表单的身份验证没有重定向到登录页面

我在web中使用基于表单的身份验证。Tomcat中的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的值。当会话超时时,页面操作将停止。jsp被打开,并在过滤日志中显示用户名为空。但它不会重定向到登录页面。 有什么问题吗

LoginServlet只是重定向到登录页面

 response.sendRedirect(response
              .encodeRedirectURL("/WebFwCore/web/pages/main.jsp"));

在过滤器里我正在打印

 request.getRemoteUser();
    request.isUserInRole('something');

这是无效的 在网络上。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>

共 (1) 个答案

  1. # 1 楼答案

    在LoginServlet中

    • 使用request.getSession(false);

    • 如果会话为空,则重定向到登录页面

    • 在检查请求之前,请始终检查会话,因为请求可能是新的(以及身份验证),但会话绑定到的早期请求可能已过期

    • 或者,您可以使用会话侦听器来控制会话到期,并根据应用程序的要求适当地执行操作