java - Tomcat 中的 FORM 身份验证期间出错

标签 java authentication tomcat

我想让 Tomcat 控制身份验证。为了测试它,我创建了简单页面、登录页面和 loginError 页面。
身份验证似乎有效。当我输入错误的登录名或密码时,我会看到 loginError 页面。但是当我输入正确的登录名和密码时,我看到:

type Status report

message Access to the requested resource has been denied

description Access to the specified resource (Access to the requested resource has been denied) has been forbidden.

这是我的 web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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_2_5.xsd">
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <security-constraint>
        <web-resource-collection>
            <url-pattern>/protected.jsp</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>*</role-name>
        </auth-constraint>
    </security-constraint>
    <login-config>
        <auth-method>FORM</auth-method>
        <form-login-config>
            <form-login-page>/login.jsp</form-login-page>
            <form-error-page>/loginError.jsp</form-error-page>
        </form-login-config>
    </login-config>

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

这是我的 tomcat-users.xml

<tomcat-users>

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

我的 login.jsp 看起来像:

<html>
    <body>
        <form id="loginForm" method="post" action="j_security_check">
            <p>
                Username: <input type="text" name="j_username" id="j_username" />
                <br/>
                Password: <input type="password" name="j_password" id="j_password" />
                <br/>
                <button type="submit">login</button>
            </p>
        </form>
    </body>
</html>

我部署它我使用 NetBeans 6.9.1。我使用 Tomcat 6.0.29。 有什么问题? 提前谢谢你。

最佳答案

使用

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

要求您还定义“有效”角色

<security-role>
      <role-name>admin</role-name>
</security-role>
<security-role>
     <role-name>user</role-name>
</security-role>

如果用户输入了有效的名称/密码,但只是角色“dimwit”,他们将被拒绝访问

关于java - Tomcat 中的 FORM 身份验证期间出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4413619/

相关文章:

java - jvmti中如何唯一标识线程

javascript - Passport js本地策略: TypeError: LocalStrategy requires a verify callback

c# - Winforms 登录中的 ASP .NET Core 身份未进行身份验证

java - 从应用程序中删除已部署的 Web 应用程序中的文件

java - 如何设置编译器编码?

java - System.out.println ('teststring' ) 如何在控制台上打印该值?哪个 native 方法正在执行实际工作?

java - 多线程机制?

api - Restful api 身份验证与 oauth2 混淆

session - Grails Tomcat 无法序列化 sessionid : groovy. lang.MapWithDefault 的增量请求

java - 在 apache tomcat 中传输 body 之前分析 HTTP-header