1

重複の可能性:
JDBCレルムログインページ

みなさん、こんにちは。jdbcレルムとカスタムログインフォーム(フォームベースの認証ログイン制約方式)にバンドルされたアプリケーションログイン機能を作成したいと思います。

リンクを提供するか、助けていただければ幸いです。

助けてください。

ありがとう。

4

1 に答える 1

7

どのようなコンテナを使用していますか?jBoss?Tomcat?Derby?
永続ストレージも利用する必要があります->はい、DBMSが必要です。それはどれ?MySQL?Sysbase?Oracle PL/SQL?MS SQL?

初心者向けのドキュメントはこちらから入手できます:
http://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html#JDBCRealm

一般に、DB バックエンド、JDBC-ODBC ドライバー (jar)、および認証を行うコンテナ。

ただし、行き詰まった場合に役立つガイダンスと洞察を提供します。

Tomcat 7.0+ と MySQL 5.5 を使用していると仮定すると、次の手順に従います
。最初は面倒に思えるかもしれませんが、実際には非常に簡単です。
まず、MySQL または必要なその他の DBMS をインストールします。ここで最も重要なことの 1 つは、インストーラーが自動的に実行する MySQL サービスに名前を付けて登録することです*。データベースへの接続を試みます**。
成功したら、デフォルトの DBMS 特権ユーザーのユーザー名 (root) とパスワード ("") を変更します。
プロジェクト スキーマを作成します。
「users」と「rights」という名前のスキーマに 2 つのテーブルを作成します。
最初のテーブル (ユーザー) には、ユーザー名とパスワードの 2 つの列が必要です。
2 つ目 (権限) にも、ユーザー名とロールの 2 つの列が必要です。
まず、両方のテーブルを空白のままにします。

次に、Tomcat の Catalina (別名ホーム) conf(iguration) ディレクトリにある tomcat-users.xml と server.xml を編集する必要があります。
tomcat-users.xml : このファイルには、tomcat が認識できるロールが含まれています。そのため、'client'、'customer'、'unauthenticated' などのロールを少なくとも 1 つ追加する必要があります
。さらに、このファイルには、Tomcat を手動で起動するときに使用される Tomcat のユーザー名とパスワードのインスタンスが少なくとも 1 つあります。またはサービスとして、またはIDE経由で。そのインスタンスはデータベースに挿入する必要があるため、コンテナーがそれ自体を認証するために手動で (SQL コード) 追加する必要があります (そうしないと、コンテナー自体から永続的なログイン エラーが発生します)。
サーバー.xml:ここで、JDBC-ODBC ドライバーがプロジェクトのクラスパスに追加されていると仮定して、UserDatabaseRealm

<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>

をコメント アウトし、LockoutRealm (既に存在する) 内にこのようなものを追加し

<Realm className="org.apache.catalina.realm.JDBCRealm" connectionURL="jdbc:mysql://localhost:3306/SCHEMA_NAME_IN_DB?user=DB_USER;password=DB_PASS" debug="99" driverName="com.mysql.jdbc.Driver" userTable="users" userNameCol="username" userCredCol="password" userRoleTable="rights" roleNameCol="role"/>

ます (または、LockOutRealm が必要ない場合は追加しません -> 同様にコメント アウトします)。次に、上記のレルムを貼り付けます)

SCHEMA_NAME_IN_DB、DB_USER、および DB_PASS は、スキーマを作成し、DBMS 特権ユーザーのユーザー名とパスワードを変更したときに設定した値です。あとは、実行中の Tomcat のインスタンスのユーザー名とパスワード (role:'manager-script') と MySQL 特権ユーザー (role:custom ie 'client') をデータベースに追加するだけです。
Showcase 用に 1 人または 2 人のテスト ユーザーも追加し、それらを tomcat-users.xml に手動で追加したロールに関連付けます。

最後に、プロジェクトの web.xml ファイルを編集する必要があります。そこでは、ログイン構成、セキュリティ ロール、およびセキュリティ制約を提供する必要があります。
ログイン構成: ログイン ページとログイン エラー ページを提供します。
Security Roles : users-tomcat.xml ファイルに手動で追加したセキュリティ ロールをここに追加します。ユーザーがログインして任意のページにアクセスするために必要なセキュリティ ロールを追加します。 Security Constraints : ログインしたユーザーによる認証アクセスが必要なページを指定します。

例 ( weeeh! )

<security-constraint>

<display-name>URLsConstraintMechanism</display-name>
<web-resource-collection>
<web-resource-name>clientURL</web-resource-name>
<description>Required access to specified URL with client permissions </description>
<url-pattern>/securedURL/index.html</url-pattern>
<http-method>GET</http-method>
<http-method>PUT</http-method>
<http-method>POST</http-method>
<http-method>DELETE</http-method>
</web-resource-collection>
... (web-resource-collections の詳細はこちら)

<auth-constraint>
<description>Required privileges to access securely constraint URLs.</description>
<role-name>client</role-name>
</auth-constraint>

</security constraint>

<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/index.html</form-login-page>
<form-error-page>/index_denied.html</form-error-page>
</form-login-config>
</login-config>

<security-role>
<description>Required privileges to access securely constraint URLs.</description>
<role-name>client</role-name>
</security-role>

IDE (特に web.xml 用の NetBeans) を使用すると、これははるかに簡単になります。

楽しむ!!!そして頑張ってください:D :) :D

* と ** について:
MySQL 5.5 のインストーラーには 2 つの重大なバグがあります。
ヘルプが必要な場合は、この URL を確認してください:
https://serverfault.com/questions/214435/error-1067-the-process-terminated-unexpectedly-when-trying-to-install-mysql-on

PS: 明日また来ますいくつかのヒントを追加します。とりあえず寝ます!xD

于 2011-05-28T04:31:13.933 に答える