4D v14.3

On SQL Authenticationデータベースメソッド

ホーム

 
4D v14.3
On SQL Authenticationデータベースメソッド

On SQL Authenticationデータベースメソッド 


 

$1, $2, $3 -> On SQL Authenticationデータベースメソッド -> 戻り値 
引数   説明
$1  テキスト in ユーザー名
$2  テキスト in パスワード
$3  テキスト in (オプション) リクエスト送信元クライアントのIPアドレス
戻り値  ブール in True = リクエストを受け入れる、False = リクエストを拒否する

  

On SQL Authenticationデータベースメソッドは4Dに統合されたSQLサーバへ送られたリクエストを選別します。この選別は、名前とパスワード、そしてユーザのIPアドレス (オプション) に基づいて実行されます。開発者は独自のユーザーテーブルや、4Dのユーザーテーブルを使用して、接続を識別できます。接続を認証したら、CHANGE CURRENT USER コマンドを呼び出して、4Dのデータベース内のリクエストへのアクセスをコントロールしなければなりません。

On SQL Authenticationデータベースメソッドが存在する場合、4Dまたは4D ServerのSQLサーバに外部からSQL接続が行われると、自動的にこのメソッドが呼び出されます。4Dユーザを管理する内部システムは起動しません。データベースメソッドが$0にTrueを返しかつ、CHANGE CURRENT USERコマンドの実行が成功した場合のみ、接続が受け入れられます。これらの条件を満たさない場合リクエストは拒否されます。

NoteSQL LOGIN(SQL_INTERNAL;$user;$password)ステートメントは内部接続となるため、On SQL Authenticationデータベースメソッドを呼び出しません。

データベースメソッドは最大3つのテキストタイプの引数を4Dより受け取り、$0にブール値を返します。以下はこれらの引数の説明です。

引数説明
$1テキストユーザ名
$2テキストパスワード
$3テキスト(オプション) リクエスト元のクライアントのIPアドレス
$0ブールTrue = リクエストを許可, False = リクエストを拒否

以下のようにこれらの引数を宣言しなければなりません:

  ` On Web Authentication データベースメソッド
 
 C_TEXT($1;$2;$3)
 C_BOOLEAN($0)
  ` メソッドコード

標準テキストとして、パスワード($2)を受け取ります。

On SQL AuthenticationデータベースメソッドでSQL接続の識別子を確認します。例えば、ユーザのカスタムテーブルを使用して名前とパスワードをチェックします。識別子が有効な場合は、$0にTrueを返して接続を受け入れます。その他の場合は$0に、Falseを返して接続が拒否されます。

Note: On SQL Authenticationデータベースメソッドが存在しない場合、4Dの統合されたユーザ管理システムを使用して、接続を決定します (有効になっている場合、つまりDesignerにパスワードが割り当てられている場合)。このシステムが起動していない場合、ユーザはDesignerアクセス権 (フリーアクセス) で接続されます。

$0にTrueを渡す場合、リクエストを受け入れ、ユーザのためにSQLのセッションを開くためには、On SQL AuthenticationデータベースメソッドCHANGE CURRENT USER コマンドを呼び出し、その実行が成功しなければなりません。

CHANGE CURRENT USER コマンドは、仮想の認証システムを実行するために使用されます。この認証システムには、2つの利点があります。1つは接続動作をコントロールできること。もう1つは4DのSQLセッションで接続の識別子を外部から見えないようにします。

以下の例でOn SQL Authenticationデータベースメソッドは、接続リクエストが内部ネットワークからのものであることを確認し、識別子を検証、SQLセッションへのアクセス権に"sql_user" ユーザを割り当てます。

 C_TEXT($1;$2;$3)
 C_BOOLEAN($0)
  `$1: user
  `$2: password
  `{$3: IP address of client}
 ON ERR CALL("SQL_error")
 If(checkInternalIP($3))
  `checkInternalIPメソッドはIPアドレスが内部のものか確認します。
    If($1="victor") & ($2="hugo")
       CHANGE CURRENT USER("sql_user";"")
       If(OK=1)
          $0:=True
       Else
          $0:=False
       End if
    Else
       $0:=False
    End if
 Else
    $0:=False
 End if

 
プロパティ 

プロダクト: 4D
テーマ: データベースメソッド

 
履歴 

初出: 4D v11 SQL Release 2

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v14 R3)
ランゲージリファレンス ( 4D v12.4)
ランゲージリファレンス ( 4D v14 R2)
ランゲージリファレンス ( 4D v13.5)
ランゲージリファレンス ( 4D v14.3)
ランゲージリファレンス ( 4D v14 R4)