使用postgres进行GlassFish JDBC身份验证。无法登录该应用程序

时间:2016-08-11 12:04:26

标签: java postgresql jsp glassfish payara

我正在尝试使用Postgres 9.4进行Payara身份验证。我一直在关注一些教程,但它们不起作用。我创建了一个数据库,填充它,记得散列密码(使用MD-5),然后是JDBC连接池(ping工作),然后是jdbc资源,一个领域,接下来我创建一个java web应用程序,我记得关于web。 xml,glassfish-web.xml,关于登录和错误页面....在部署应用程序并尝试登录后,我得到一个错误页面(我在应用程序中创建的那个)。

这正是我所做的:

我创建了一个名为“security”的数据库:

CREATE TABLE "Group" (
    group_id serial  NOT NULL,
    group_name text  NOT NULL,
    user_id int  NULL,
    CONSTRAINT Group_pk PRIMARY KEY (group_id)
);

CREATE TABLE Users (
    user_id serial  NOT NULL,
    username text  NOT NULL,
    password text  NOT NULL,
    CONSTRAINT Users_pk PRIMARY KEY (user_id)
);

ALTER TABLE "Group" ADD CONSTRAINT Group_Users
    FOREIGN KEY (user_id)
    REFERENCES Users (user_id)  
    NOT DEFERRABLE 
    INITIALLY IMMEDIATE
;

我使用加密网站加密我的密码“test”,并获得以下值: 098f6bcd4621d373cade4e832627b4f6。我用这个值来填充我的数据库:

我使用Payara Server。 我创建了新的JDBC连接池,就像在图片上一样。我得到信息“Ping成功”,所以我认为这部分是可以的。

我使用JNDI名称:jdbc / simplesec和池名称:secuPool创建JDBC资源。

我创建了一个名为“secuRealm”的新领域 - 下面的图片。我想那里可能有些不对劲? realm part 1 realm part 2 接下来,我编写应用程序部分。 (我选择web应用程序,java)。 glassfish-web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app error-url="">
  <security-role-mapping>
    <role-name>admin</role-name>
    <group-name>admin</group-name>
  </security-role-mapping>
  <security-role-mapping>
    <role-name>guest</role-name>
    <group-name>guest</group-name>
  </security-role-mapping>
  <class-loader delegate="true"/>
  <jsp-config>
    <property name="keepgenerated" value="true">
      <description>Keep a copy of the generated servlet class' java code.</description>
    </property>
  </jsp-config>
</glassfish-web-app>

的web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <login-config>
        <auth-method>FORM</auth-method>
        <realm-name>secuRealm</realm-name>
        <form-login-config>
            <form-login-page>/login.jsp</form-login-page>
            <form-error-page>/error.jsp</form-error-page>
        </form-login-config>
    </login-config>
</web-app>

的login.jsp:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Login</h1>
        <form action="j_security_check" method="POST">
            Username:<input type="text" name="j_username"/><br/>
            Password:<input type="password" name="j_password" /><br />
            <input type="submit" value="Login" />
            <br/>            
        </form>
    </body>
</html>

的error.jsp:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Incorrect Credentials</h1>
        Try again. <br/>
        <a href="login.jsp">Login</a>
    </body>
</html>

index.jsp:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World!</h1><br />
        <a href="login.jsp">Login</a>
    </body>
</html>

部署应用程序后,我尝试登录。用户名:1​​,密码:test。我得到一个error.jsp页面作为回应。我不明白为什么,使用正确的用户数据,我无法登录。 我在哪里犯了错误以及如何使它发挥作用?

1 个答案:

答案 0 :(得分:0)

尝试在领域设置中指定Digest Algorythm:none