<< Click to Display Table of Contents >> マニュアル > 監視システム構築ガイド > プロジェクトの作成 > 標準プロジェクトの作成 > 標準プロジェクトのユーザ管理(ログイン) > 機能解説 > (参考)パスワードダイアログによる簡易的な保護 |
パスワードダイアログによる簡易的な保護
ここでは、FA-Panelのログインやユーザ管理機能とは別に、部分的に保護が必要な場所でパスワードを設けて簡易的にロックする方法について説明します。
この方法は、FA-Panelにあらかじめ用意されている「パスワードダイアログ」を利用した簡易的な方法です。
(パスワードダイアログ)
例えば、重要な運転パラメータの編集画面の表示ボタンなどを、ログイン機能によるセキュリティ保護とは関係なく、パスワードで簡易的にロックしたいような場面では、この方法が最も簡単です。パスワードダイアログはコモンダイアログの1つであり、スクリプトから呼び出すことができます。例えば、ある特定の画面表示に対して保護を掛けたい場合、ロック対象となるポイントは画面呼び出しボタンのクリックによるイベントです(OnMouseUpイベントなど)。このイベントからパスワードダイアログを呼び出し、あらかじめ決めておいたパスワードをオペレータに入力させて、パスワードの合否に応じて対象画面を表示するか否かを判定するような処理を構築することができます。
本ページで紹介されている方法は簡易的な方法です。ユーザ管理機能を利用することで、ユーザレベルや権限情報を用いたより高度なセキュリティ要件に対応することができます。 |
パスワードダイアログによる保護の実装例
ここでは例として、通常は無効の状態になっているボタンを、パスワードダイアログから正しいパスワードが入力された時に有効に切り替える処理を紹介します。
1.フォームにボタンを貼り付ける
Form01上に、以下のようなイメージでボタンを貼り付けます。
•上2つのボタンのTextを、“ボタン有効化”、“ボタン無効化”にする •下3つのボタンのTextを、“ボタン1”、“ボタン2”、“ボタン3”にする •下3つのボタンのNameを、“Btn1”、“Btn2”、“Btn3”にする •下3つのボタンのEnabledをFalseにする |
2.有効化ボタンのOnMouseUpの記述
ボタンのクリック時にパスワードダイアログを表示し、パスワードが正しい時のみ各ボタンを有効にするようにします。
有効化ボタンのOnMouseUpイベントに、以下のスクリプトを記述します。
event OnMouseUp(button) { if (parent.Btn1.Enabled == F ) { ::OpenPassword(this, "pass", "inputagain"); } }
ここで、第2引数に指定している文字列(この例では“pass”)が、パスワードの実体になります。また、第3引数で“inputagain”と指定すると、誤ったパスワードが入力された時にダイアログを再表示してパスワードの再入力を促す動作となります。
3.有効化ボタンのOnCommonEventの記述
有効化ボタンのOnCommonEventイベントに、以下のスクリプトを記述します。
event OnCommonEvent(name,value) { if (value && name == "RCPassword") { parent.Btn1.Enabled = T; parent.Btn2.Enabled = T; parent.Btn3.Enabled = T; } }
4.無効化ボタンのOnMouseUpの記述
無効化ボタンのOnMouseUpイベントに、以下のスクリプトを記述します。
event OnMouseUp(button) { parent.Btn1.Enabled = F; parent.Btn2.Enabled = F; parent.Btn3.Enabled = F; }
5.動作確認
Panel Browserで実行します。
初期状態では、ボタン1,2,3が無効の状態です。ボタン有効化をクリックして下さい。
6.パスワードダイアログが表示されました。試しに誤ったパスワードを入力してみて下さい。
誤ったパスワードが入力されると、以下のようなエラーメッセージが表示されます。
“inputagain”を指定しているため、パスワードダイアログは表示されたままの状態です。
続いて、正しいパスワードを入力して下さい。
各ボタンが有効状態になりました。
ボタン無効化をクリックすると、各ボタンが無効状態に戻ります。
このような実装パターンは、例えば設備の運転パラメータの編集時など、保護したいボタンの操作時にパスワードの入力を求め、一通りの操作が終了した後でボタンを無効に戻したい、といった場面で効果的な手法です。