Java 基于表单的身份验证:重命名<;表单登录页面>;

Java 基于表单的身份验证:重命名<;表单登录页面>;,java,servlets,web.xml,Java,Servlets,Web.xml,我有一个关于使用基于表单的身份验证保护web应用程序的问题。 运行应用程序时,我希望文件web.xml链接到以下页面: <form-login-page>/login.jsp</form-login-page> /login.jsp 默认情况下,web.xml似乎使用以下链接: <form-login-page>/index.jsp</form-login-page> /index.jsp 我的问题是:我怎样才能改变这一点?文件web.xm

我有一个关于使用基于表单的身份验证保护web应用程序的问题。 运行应用程序时,我希望文件web.xml链接到以下页面:

<form-login-page>/login.jsp</form-login-page>
/login.jsp
默认情况下,web.xml似乎使用以下链接:

<form-login-page>/index.jsp</form-login-page>
/index.jsp
我的问题是:我怎样才能改变这一点?文件web.xml如下所示:

<!-- language: lang-xml -->

   <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
        <servlet>
            <servlet-name>SecureServlet</servlet-name>
            <servlet-class>SecureServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>SecureServlet</servlet-name>
            <url-pattern>/SecureServlet</url-pattern>
        </servlet-mapping>
        <session-config>
            <session-timeout>
                30
            </session-timeout>
        </session-config>
        <security-constraint>
            <display-name>Admin Pages</display-name>
            <web-resource-collection>
                <web-resource-name>Administrative Pages</web-resource-name>
                <description/>
                <url-pattern>/admin.jsp</url-pattern>
            </web-resource-collection>
            <auth-constraint>
                <role-name>admin</role-name>
            </auth-constraint>
            <user-data-constraint>
                <transport-guarantee>CONFIDENTIAL</transport-guarantee>
            </user-data-constraint>
        </security-constraint>
        <login-config>
            <auth-method>FORM</auth-method>
            <realm-name>file</realm-name>
            <form-login-config>
                <form-login-page>/login.jsp</form-login-page>
                <form-error-page>/errorpage.jsp</form-error-page>
            </form-login-config>
        </login-config>
        <security-role>
            <description>Administrator</description>
            <role-name>admin</role-name>
        </security-role>
        <security-role>
            <description>User</description>
            <role-name>user</role-name>
        </security-role>
    </web-app>

SecureServlet
SecureServlet
SecureServlet
/SecureServlet
30
管理页面
管理页面
/admin.jsp
管理
保密的
形式
文件
/login.jsp
/errorpage.jsp
管理员
管理
使用者
用户

您需要在web.xml中设置欢迎文件,以将上下文根目录的默认位置设置为登录页:-

<welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
</welcome-file-list>

login.jsp

请注意,该文件是相对于上下文根的,因此不需要前面的斜杠。

我有一个文件admin.jsp,输入正确的用户名和密码时需要显示该文件。当我尝试这样做时,我会被重定向回index.jsp。您知道这个问题的解决方案吗?登录后您是如何尝试重定向的?我想您实际上想将欢迎文件设置为
admin.jsp
。这将导致安全指令在您未经身份验证时将您重定向到登录页面,当您进行身份验证时,它将发送到您请求的原始URL,即,
admin.jsp
。我试图将欢迎文件设置为admin.jsp,但随后我在未登录的情况下获得了管理员页面。奇怪,一定是安全约束出了问题。否则,有人可以直接键入URL而不登录!让我看看是不是什么明显的事情。