CHANGE CURRENT USER
CHANGE CURRENT USER {( user ; password )}
引数 | 型 | 説明 | |
---|---|---|---|
user | Text, Integer | → | 名前またはユニークなユーザーID |
password | Text | → | (暗号化されていない)パスワード |
このコマンドはスレッドセーフではないため、プリエンプティブなコードには使えません。
説明
CHANGE CURRENT USER コマンドを使用すると、データベースを終了させずに、カレントユーザーを変更できます。ユーザーはデータベース接続ダイアログボックス (引数なしでコマンドが呼び出された場合) を使用して、またはコマンドから直接、ログインユーザーを変更することが可能です。ユーザーがログインを変更すると、選択されたユーザーが保有する権限を優先す るため、以前のアクセス権はすべて放棄されます。
注:
- シングルユーザーモードで開かれたプロジェクトデータベースにおいては、このコマンドはなにもしません。
- SET USER ALIAS コマンドによってカレントユーザーのエイリアスが定義されていた場合、CHANGE CURRENT USER コマンドはそれをリセットします。
引数なしで CHANGE CURRENT USER コマンドが実行されると、データベース接続ダイアログボックスが表示されます。データベースに入るには、ユーザーは必ず有効な名前とパスワードを入力または選択しなければなりません。接続ダイアログボックスの内容は、データベース環境設定の セキュリティページに依存します。
また、使用するアカウントをプログラミングで指定するには、2つのオプション引数 user と password を渡します。
引数 user には、使用するアカウントの名前またはユニークなユーザーID (userRef) を渡します。 GET USER LIST コマンドを用いて、ユーザー名とIDを取得できます。
ユーザーアカウントが存在しない場合や削除された場合、エラーコード -9979が返されます。 ON ERR CALL コマンドを用いてインストールされたエラー処理メソッドでこのエラーを検知することができます。その他では Is user deleted コマンドを呼び出してユーザーアカウントをテストし、その後このコマンドを呼び出す方法があります。
暗号化されていないユーザーアカウントのパスワードを引数 password に渡します。パスワードがユーザーと一致しない場合、コマンドはエラーメッセージ -9978を返し、何も行いません。
フラッディング (ブルートフォース攻撃) 、つまり、複数のユーザー名とパスワードの組み合わせによる試みを防ぐために、コマンドは遅れて実行されます。その結果、このコマンドを4回呼び出した後は、10秒経った後にコマンドは実行されます。この遅れは、ワークステーション全体を通して発生します。
注意: カレントユーザーのグループが"シリアル化された"機能(例: プラグイン)へのアクセスを提供していた場合、それに対応したライセンスが使用され、セッションの終了までその4D ユーザーのアカウントに付与されたままになります。これはコマンドが呼び出され、新しいユーザーのグループがその機能へのアクセスを提供していなかった場合でも同じです。
カスタムアクセス管理ダイアログボックスの提供
CHANGE CURRENT USER コマンドを使用して、名前とパスワード (入力と有効期限のルール付き) を入力するためのカスタムダイアログボックスを設定することができます。このダイアログボックスには、4Dのアクセスコントロールシステムと同じメリットがあります。
次のように機能します。
- "デフォルトユーザー" モードでは、ダイアログボックスは表示されず、直接データベースへ入ります。
- は、ユーザー名とパスワードを入力するためのカスタムダイアログボックスを表示します。実行可能な処理はすべてダイアログに表示されています。
- 4Dの標準アクセスダイアログボックスと同様に、GET USER LIST コマンドを使用してデータベースのユーザーリストを表示できます。
- 入力された文字の有効性をチェックするための様々な規制 (最低文字数、ユニークなど) を、パスワード入力フィールドにつけられます。
- 入力中のパスワードの文字を画面上でマスクするには、FILTER KEYSTROKE コマンドと特別な*%password* フォントを使用します。
- 有効期限に関する規則は、ダイアログボックスを受け入れる時に適用できます。期限切れ、初期の接続への変更、数回に及ぶ不正入力後のアカウントロック、既に使用されたパスワードのメモリーなど。
- 入力が有効になると、ユーザーのアカウント権限でデータベースを開くために、必須情報 (ユーザー名とパスワード) が CHANGE CURRENT USER コマンドに渡されます。
例題
次の例は、接続ダイアログボックスを表示します。
CHANGE CURRENT USER
注: シングルユーザー プロジェクトデータベースにおいては、このコードなにもしません。