| 4D v13.4On Web Authenticationデータベースメソッド | ||||||||||||||||||||||||||||||||||||||||
| 
 | 
    4D v13.4
 On Web Authenticationデータベースメソッド 
         | |||||||||||||||||||||||||||||||||||||||
| 引数 | 型 | 説明 | 
| $1 | テキスト | URL | 
| $2 | テキスト | HTTPヘッダー + HTTPボディ (32 KBまで) | 
| $3 | テキスト | Webクライアント (ブラウザー) のIPアドレス | 
| $4 | テキスト | サーバーのIPアドレス | 
| $5 | テキスト | ユーザー名 | 
| $6 | テキスト | パスワード | 
| $0 | ブール | True = リクエストを受け入れる, False = リクエストを拒否する | 
これらの引数を以下のように宣言しなければなりません:
注: On Web Authenticationデータベースメソッドのすべての引数が必ず値を受け取るわけではありません。データベースメソッドが受け取る情報はデータベース設定ダイアログボックスでの設定により異なります (接続セキュリティ参照)。
| Webブラウザーのアドレスに入力された値 | $1の値 | 
| 123.4.567.89 | / | 
| http://123.4.567.89 | / | 
| 123.4.567.89/Customers | /Customers | 
| http://123.4.567.89/Customers | /Customers | 
| http://123.4.567.89/Customers/Add | /Customers/Add | 
| 123.4.567.89/Do_This/If_OK/Do_That | /Do_This/If_OK/Do_That | 
注: ブラウザーから送信されたユーザー名が4Dに存在する場合、$6 引数 (ユーザーパスワード) はセキュリティのため渡されません。
On Web Connectionデータベースメソッドは、接続がOn Web Authenticationデータベースメソッドにより受け入れられた時にのみ実行されます。
警告: $0に値が設定されないか、$0がOn Web Authenticationデータベースメソッド内で定義されていない場合、接続は受け入れるものとされ、On Web Connectionデータベースメソッドが実行されます。
注:
On Web Authenticationデータベースメソッドは、リクエストや処理が4Dメソッドの実行を必要とするとき自動で呼び出されます。またWebサーバーが無効なスタティックURLを受け取ったときにも呼び出されます (例えばリクエストされたスタティックページが存在しない場合)。
まとめるとOn Web Authenticationデータベースメソッドは以下のケースで呼び出されます:
互換性に関する注意: このデータベースメソッドは4Dが/4DMETHOD/ で始まるURLを受信したときにも実行されます。このURLは廃止予定であり、互換性の目的で保持されています。
有効なスタティックページをリクエストするURLを受信したとき、On Web Authenticationデータベースメソッドは呼び出されないことに注意してください。
BASIC認証モードのOn Web Authenticationデータベースメソッドの例題:
  `On Web Authentication データベースメソッド
 C_TEXT($1;$2;$3;$4;$5;$6)
 C_BOOLEAN($0)
 
 C_TEXT($user;$password;$BrowserIP;$ServerIP)
 C_BOOLEAN($4Duser)
 ARRAY TEXT($users;0)
 ARRAY LONGINT($nums;0)
 C_LONGINT($upos)
 
 $0:=False
 
 $user:=$5
 $password:=$6
 $BrowserIP:=$3
 $ServerIP:=$4
 
  `セキュリティのため@を含むユーザー名とパスワードは拒否
 If(WithWildcard($user)|WithWildcard($password))
    $0:=False
  `WithWildcard メソッドは後述
 Else
  `4Dユーザーかチェック
    GET USER LIST($users;$nums)
    $upos:=Find in array($users;$user)
    If($upos >0)
       $4Duser:=Not(Is user deleted($nums{$upos}))
    Else
       $4Duser:=False
    End if
 
    If(Not($4Duser))
  `4Dに定義されたユーザーでない場合、Webusersテーブルを検索
       QUERY([WebUsers];[WebUsers]User=$user;*)
       QUERY([WebUsers]; & [WebUsers]Password=$password)
       $0:=(Records in selection([WebUsers])=1)
    Else
       $0:=True
    End if
 End if
  `イントラネット接続か?
 If(Substring($BrowserIP;1;7)#"192.100.")
    $0:=False
 End ifDIGEST認証モードのOn Web Authenticationデータベースメソッドの例題:
  // On Web Authentication Database Method
 C_TEXT($1;$2;$5;$6;$3;$4)
 C_BOOLEAN($0)
 
 C_TEXT($user)
 
 $0:=False
 $user:=$5
 
  // セキュリティのため@文字を含むユーザー名を拒否
 If(WithWildcard($user))
    $0:=False
  // <span class="rte4d_met">WithWildcard</span> メソッドは後述
 Else
    QUERY([WebUsers];[WebUsers]User=$user)
    If(OK=1)
       $0:=WEB Validate digest($user;[WebUsers]password)
    Else
       $0:=False // ユーザーが存在しない
    End if
 End ifWithWildcard メソッドは以下の通りです:
  // WithWildcard メソッド
  // WithWildcard ( String ) -> ブール
  // WithWildcard ( Name ) -> ワイルドカード文字を含んでいるか
 
 C_INTEGER($i)
 C_BOOLEAN($0)
 C_TEXT($1)
 
 $0:=False
 For($i;1;Length($1))
    If(Character code(Substring($1;$i;1))=Character code("@"))
       $0:=True
    End if
 End for
	プロダクト: 4D
	テーマ: Webサーバ
	
        
        
	
On Web Connectionデータベースメソッド
URLとフォームアクション
データベースメソッド
接続セキュリティ