1

我正在尝试使用 MySQL 数据库获取我的登录表单并继续收到以下错误:

[更新] --> 我今天做了一些修改,这就是我现在得到的:

SEVERE: jdbcrealm.invaliduserreason
WARNING: WEB9102: Web Login Failed: com.sun.enterprise.security.auth.login.common.LoginException: Login failed: Security Exception
WARNING: WEB9102: Web Login Failed: com.sun.enterprise.security.auth.login.common.LoginException: Login failed: Security Exception
WARNING: WEB9102: Web Login Failed: com.sun.enterprise.security.auth.login.common.LoginException: Login failed: Security Exception

这就是我从堆栈跟踪中得到的全部信息。我正在关注本教程:http ://blog.eisele.net/2011/01/jdbc-security-realm-and-form-b​​ased.html

这是我在 glassfish-web.xml 上的映射:

  <security-role-mapping>
    <role-name>user</role-name>
    <group-name>user</group-name>
  </security-role-mapping>

这是我的 web.xml:

<security-constraint>
    <display-name>user</display-name>
    <web-resource-collection>
        <web-resource-name>Users Area</web-resource-name>
        <description>Protected Users Area</description>
        <url-pattern>/user/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>PUT</http-method>
        <http-method>HEAD</http-method>
        <http-method>POST</http-method>
        <http-method>OPTIONS</http-method>
        <http-method>TRACE</http-method>
        <http-method>DELETE</http-method>
    </web-resource-collection>
    <auth-constraint>
        <description/>
        <role-name>user</role-name>
    </auth-constraint>
</security-constraint>
<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>jdbcRealm</realm-name>
    <form-login-config>
        <form-login-page>/login.jsp</form-login-page>
        <form-error-page>/login-error.jsp</form-error-page>
    </form-login-config>
</login-config>
<security-role>
    <description>user security role</description>
    <role-name>user</role-name>
</security-role>

这是我的登录表单:

    <form action="j_security_check" class="form" method="post">

            <p class="email">
                    <input type="text" name="j_username" id="j_username"/>
                    <label for="j_username">E-mail / Username</label>
            </p>

            <p class="pwd">
                    <input type="password" name="j_password" id="j_password" />
                    <label for="j_password">Password</label>
            </p>

            <p class="submit">
                    <input name="login" type="submit" value="Login" /> 
                    <input name="reset_pwd" type="submit" value="Reset Password">                                                                                                                              
            </p>

    </form>

这是我在服务器中设置的领域的屏幕截图。我暂时没有使用加密来简化事情: 领域

因为除了我在上面发布的内容之外,我在堆栈中没有其他内容。我真的不确定出了什么问题。如果有人能推动我朝着正确的方向前进,我将不胜感激。

4

3 回答 3

4

在 Glassfish 中的 jdbcRealm 设置中,请务必在算法中写入“none”(而不是 SHA-256 或其他任何内容)。如果您将该字段留空,它将不起作用。

希望这可以帮助...

于 2012-07-21T01:09:29.587 回答
2

为我修复它的愚蠢而整洁的东西;领域是表和列名中的小写字母,尤其是我的 mysql 数据库中的大写字母。请记住检查 Realms 中表的大小写敏感性。

于 2013-08-06T13:45:34.733 回答
1

如果您使用的是 Glassfish 4,您需要填写字段数据库用户和数据库密码,它们出现在设置 -> 服务器配置 -> 安全 -> 领域 -> (jdbcRealm)

在此处输入图像描述

于 2015-10-26T08:12:33.737 回答