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

我已经像下面这样设置了我的环境,但在登录后它说访问被拒绝,就像角色设置不正确一样。

这里有一些信息:

  • 我使用 BASIC 身份验证,只要输入错误的用户名或密码,浏览器登录表单就会重新出现。当我输入正确的用户名并传递它时,它消失了,我收到了拒绝访问的消息

  • 如果我配置<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"

/>

数据库

http://img.mukewang.com/63edf4e100011dd506530222.jpg

user数据

http://img2.mukewang.com/63edf4f40001260d03790089.jpg

user_role数据

http://img4.mukewang.com/63edf4ff00019b4004070100.jpg




森栏
浏览 84回答 1
1回答

守着一只汪

问题是在 user_role 表的用户名字段中,用户表的主键值是。预期是实际用户名,所以我修复了它,将 PK 从 id 更改为用户名。数据库现在看起来像这样:上帝我讨厌Java
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java