簡易的なパスワードロック

<< Click to Display Table of Contents >>

トレーニング > 応用編 > セキュリティ機能 >

簡易的なパスワードロック

ここでは、パスワードダイアログの利用による簡易的な保護機能の実装について学習します。

 

パスワードダイアログの利用

ここでは、常時無効状態になっているボタンを、パスワードダイアログから正しいパスワードが入力された時に有効に切り替える画面を作成してみます(この学習では、Panel Browserのみを使用します)。

 

1.Panel Editorからパスワードダイアログ用にフォームを作成します。
新規フォームを追加し、名前を“PasswordSample”に変更してください。
tra_0646
 
フォームの名称を変更したら、ルートプロパティのDefaultFormルートプロパティを、“PasswordSample”に変更してください。
tra_0647
 
続けてログインの各プロパティを以下に変更します。ここでは、"admin"で自動ログインするように設定します。
tra_0648
 

ルートプロパティ

設定内容

PSLoginMust

“False”

PSLoginStartup

“AUTO”

PSLoginUser

admin

PSLoginPwd

adm

 

2.フォームにボタンを貼り付ける
PasswordSampleフォーム上に、以下のようなイメージでボタンを5つ貼り付けます。
 
ボタン1、ボタン2、ボタン3はEnabledプロパティをFalseに設定します。また、ボタン1-3には、「btn1」「btn2」「btn3」をそれぞれNameプロパティに設定します。
tra_0649
 

3.ボタン有効化のスクリプト記述
このボタンのクリック時にパスワードダイアログを表示し、パスワードが正しい時のみ各ボタンを有効にします。ボタン有効化ボタンのOnMouseUpイベントに、以下のスクリプトを記述してください。

 

event OnMouseUp(button)

{

 if (parent.btn1.Enabled == F ) {

         ::OpenPassword(this, "pass", "inputagain");

 }

}

 

hint

(解説)

パスワードダイアログの呼び出しは、OpenPasswordメソッドによって行います。ここで、第二引数に指定している文字列(この例では“pass”)が、パスワードの実体になります。第三引数で“inputagain”と指定すると、誤ったパスワードが入力された時にダイアログを再表示してパスワードの再入力を促す動作となります。

“parent.Btn1.Enabled == F”のif文比較は、ターゲットのボタンが無効の時のみパスワードダイアログを表示したい為の記述です。

 

次に、ボタン有効化ボタンのOnCommonEventイベントに、以下のスクリプトを記述してください。

 

event OnCommonEvent(name,value)

{

 if (value && name == "RCPassword") {

         parent.btn1.Enabled = T;

         parent.btn2.Enabled = T;

         parent.btn3.Enabled = T;

 }

}

 

hint

(解説)

パスワードダイアログのみならず、共通ダイアログの処理結果はOnCommonEventに渡されます。パスワードダイアログによって発生したイベントかどうかは、nameパラメータの内容が“RCPassword”かどうかで判断します。又、正しいパスワードが入力された場合、valueパラメータにTrueが渡されます。

従ってここでの処理は、正しいパスワードが入力された時のみ各ボタンのEnabledにTrueがセットされることになります。

 

次に、無効化ボタンのOnMouseUpイベントに、以下のスクリプトを記述してください。

 

event OnMouseUp(button)

{

 parent.btn1.Enabled = F;

 parent.btn2.Enabled = F;

 parent.btn3.Enabled = F;

}

 

以上で画面の作成は完了です。設定ファイルを保存してください。
 

hint

パスワードダイアログのパスワードは、大文字・小文字を区別します。

 

 


 

動作確認

 

作成した簡易パスワードロックの動作を確認してみます。Panel Serverがオンライン状態で確認して下さい。

 

1.Panel Editorの下図のアイコンをクリックすると、Panel Browserが起動し、クライアント設定ファイルが開かれて実行されます。
 
tra_0013
 
初期状態では、ボタン1,2,3が無効の状態です。
 
tra_0650
 
 

2.ボタン有効化をクリックして下さい。
パスワードダイアログが表示されました。まずは誤ったパスワードを入力してみて下さい。
 
tra_0651
誤ったパスワードが入力されると、上図のようなエラーメッセージが表示されます。“inputagain”を指定しているため、パスワードダイアログは表示されたままの状態です。
 
続いて、正しいパスワードである「pass」と入力して下さい。
tra_0652
各ボタンが有効状態になりました
 

3.次に、ボタン無効化をクリックしてください。
tra_0653
各ボタンが無効状態に戻りました
 
このような実装パターンは、例えば設備の運転パラメータの編集時など、保護を掛けたいボタンの操作時にパスワードの入力を求め、ひととおりの操作が終了した後でボタンを無効に戻したい、といった場面で効果的な手法です。