有 Java 编程相关的问题?

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

未考虑登录/角色后的java JDBC Tomcat身份验证403

我已经设置了我的环境,如下所示,但在登录后,它说如果角色设置不正确,访问将被拒绝

以下是一些信息:

  • 我使用基本身份验证,只要输入错误的用户名或密码,浏览器登录表单就会重新出现。当我输入正确的用户名并通过时,它就会消失,我会收到拒绝访问的消息
  • 如果我配置了<role-name>*</role-name>,我不会得到403,登录后我可以访问受保护的页面
  • 控制台没有显示任何错误消息

网络。xml

    <security-role>
        <role-name>USER</role-name>
    </security-role>
    <security-role>
        <role-name>ADMIN</role-name>
    </security-role>
     <!--<security-role>
    <role-name>*</role-name>
    </security-role>-->
    
    <security-constraint>
        <display-name>IndexPage</display-name>
        <web-resource-collection>
            <web-resource-name>start</web-resource-name>
            <url-pattern>/pages/protected/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
        <!--<role-name>*</role-name> -->
            <role-name>USER</role-name>
            <role-name>ADMIN</role-name>
        </auth-constraint>
    </security-constraint>
    
    <login-config>
        <auth-method>BASIC</auth-method>
    </login-config>

服务器。xml

<Engine defaultHost="localhost" name="Catalina">
<Realm className="org.apache.catalina.realm.JDBCRealm"
connectionURL="jdbc:mysql://localhost:3306/jsfdb?user=root"
driverName="com.mysql.jdbc.Driver"
roleNameCol="role_name" 
userCredCol="password"
userNameCol="username1"
userRoleTable="user_role"
userTable="user"
/>

数据库

database

user数据

user table

user_role数据

user role table


共 (1) 个答案

  1. # 1 楼答案

    问题在于,在user_role表的username字段中,user表的主键的值为。Expected是实际的用户名,所以我在将PK从id更改为用户名时修复了它。db现在看起来像这样:

    db

    天哪,我讨厌爪哇