如何修复tomcat HTTP状态403:访问被拒绝

时间:2018-02-08 13:46:53

标签: java xml eclipse tomcat http-status-code-403

我使用eclipse创建了一个简单的表单athentification tomcat,其中需要访问名称和密码。但是,当我将用户名和密码放在文件tomcat-users.xml中时,我得到错误的HTTP状态403,这意味着访问被拒绝。

我猜问题出现在web.xml或server.xml中。我知道错误不在tomcat-users.xml中,因为我尝试了一切,但我总是得到同样的错误。

文件web.xml中与我的TestServlet相关的脚本是:

<servlet>
        <servlet-name>TestServlet</servlet-name>
        <servlet-class>test.TestServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>TestServlet</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Wildcard means whole app requires authentication</web-resource-name>
            <url-pattern>/*</url-pattern>
            <http-method>GET</http-method>
            <http-method>POST</http-method>
        </web-resource-collection>

        <auth-constraint>
            <role-name>tomcat</role-name>
        </auth-constraint>


    </security-constraint>

    <login-config>
        <auth-method>FORM</auth-method>
        <form-login-config>
            <form-login-page>/login.html</form-login-page>
            <form-error-page>/login-failed.html</form-error-page>
        </form-login-config>
    </login-config>
PS:当我输入错误的凭据时,我得到页面login-failed.html,所以当我输入错误的凭据时一切正常。 PS:tomcat-users.xml文件中的代码是:

<tomcat-users>
<role rolename="manager"/>
<user username="admin" password="admin" roles="manager"/>
</tomcat-users>

有人可以帮我找到问题吗?

2 个答案:

答案 0 :(得分:1)

U解压缩并尝试通过调用localhost:8080来访问它并提供登录凭据但无法正确登录。意味着你无法访问那个gui。所以你必须手动编辑XML文件并修改这样的脚本以便访问gui。在那之后,我希望它一定会有效

添加以下脚本

    <tomcat-users>
      <role rolename="manager-gui"/>
   <role rolename="manager-jmx"/>
   <role rolename="manager-status"/>
   <user username="admin" password="admin" 
     roles="manager-gui,manager-status"/>
    </tomcat-users>

    manager-gui — Access to the HTML interface.

答案 1 :(得分:1)

在身份验证约束中,您已配置“ tomcat”角色。您的tomcat-users.xml文件中缺少此角色。