Java 基于表单的身份验证:重命名<;表单登录页面>;
我有一个关于使用基于表单的身份验证保护web应用程序的问题。 运行应用程序时,我希望文件web.xml链接到以下页面: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
<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而不登录!让我看看是不是什么明显的事情。