2017-11-21 8 views
0

私はサーブレットアプリケーションにデータソースレルムセキュリティを設定しました。リソースへの最初の要求に対してのみ機能します。より多くのリクエストのために私は資格情報を必要としません。 なぜそうですか、初めてのことではなく、特定のリソースへのすべてのリクエストについて、私に尋ねるようにTomcatを設定することができます。tomcatのセキュリティレルムは最初のリクエストでのみ機能します

私を助けてください。

答えて

0

インポートするデータベースが静的であること、つまりセッションが1つであることを確認してください。あなたは、次の手順のように、すべての詳細については、スクリプトを作成することができ : は、スクリプト呼び出しcreatedb.sqlを作成し、次のデータを挿入します。データベースとユーザーをMySQLと作成するために

DROP DATABASE IF EXISTS tomcat_realm; 
CREATE DATABASE tomcat_realm; 
USE tomcat_realm; 
CREATE TABLE tomcat_users (
    user_name varchar(20) NOT NULL PRIMARY KEY, 
    password varchar(250) NOT NULL 
); 
CREATE TABLE tomcat_roles (
    user_name varchar(20) NOT NULL, 
    role_name varchar(20) NOT NULL, 
    PRIMARY KEY (user_name, role_name) 
); 
INSERT INTO tomcat_users (user_name, password) VALUES('someuser', '5f4dcc3b5aa765d61d8327deb882cf99'); 
INSERT INTO tomcat_roles (user_name, role_name) VALUES ('someuser', 'authenticated'); 
COMMIT; 

ゴー:

$ mysql -u root -p 
mysql> SOURCE ~/Documents/createdb.sql 
mysql> use tomcat_realm; 
mysql> show tables; 
mysql> CREATE USER 'realm_access'@'localhost' IDENTIFIED BY 'password'; 
+0

私はデータベースに問題はありません、私の問題は、Tomcatは、URLへのすべての要求の資格情報を要求していないです。それはちょうど最初の要求のために働くと私は正しいユーザーを入力し、サーバーにログインし、同じユーザーからの次の要求では、資格情報を要求しないでください。ログされたユーザーからのものであっても、サーバーごとに要求ごとに資格情報を要求する必要があります。私は何をすべきか?誰でも助けてください – Gareth

+0

私はあなたの意見を理解しました。最初に教えたように、初めて資格情報を要求し、ユーザーがログインして再度アプリケーションにアクセスすると、資格情報が要求されませんでした。それは期待される動作です。 – poojagupta

+0

tomcat realm機能は次のルールに従っているため、ユーザーが保護されたアプリケーションに初めてアクセスしようとすると、TomcatはこのRealmのauthenticate()メソッドを呼び出します。したがって、データベースに直接加えた変更はすぐに反映されます。 ユーザーが認証されると、ユーザーはログインの間、つまりセッションがタイムアウトするか無効になるか、ユーザーがブラウザを閉じるまで、Tomcat内にキャッシュされます。キャッシュされたユーザーは保存されず、セッションのシリアル化を通じて復元されます。 – poojagupta

関連する問題