Postgres 9.4 を使用して Payara で認証しようとしています。いくつかのチュートリアルに従っていますが、機能しません。データベースを作成し、入力し、パスワードをハッシュすることを忘れないでください (MD-5 を使用)。次に JDBC 接続プール (ping が機能します)、jdbc リソース、レルム、次に Java Web アプリケーションを作成します。Web について覚えています。 xml、glassfish-web.xml、ログインとエラーページについて....アプリケーションをデプロイしてログインしようとすると、エラーページ(アプリケーションで作成したもの)が表示されます。
これがまさに私がしていることです:
「セキュリティ」というデータベースを作成しました。
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
;
暗号化 Web サイトを使用してパスワード「test」を暗号化し、次の値を取得しました: 098f6bcd4621d373cade4e832627b4f6。その値を使用してデータベースにデータを入力しました。
私は Payara Server を使用しています。写真のように、新しい JDBC 接続プールを作成します。「Ping Succeeded」という情報が表示されるので、これで問題ないと思います。
JNDI 名が jdbc/simplesec、プール名が secuPool の JDBC リソースを作成します。
「secuRealm」と呼ばれる新しいレルムを作成します - 下の写真。何かが間違っているのではないかと思いますか? realm その 1 realm その 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>
エラー.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 ページが表示されます。正しいユーザー データを使用してもログインできない理由がわかりません。