| 4D v13.4On Web Authenticationデータベースメソッド | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 
 | 
    4D v13.4
 On Web Authenticationデータベースメソッド 
         | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| $1, $2, $3, $4, $5, $6 -> On Web Authenticationデータベースメソッド -> 戻り値 | ||||||||
| 引数 | 型 | 説明 | ||||||
| $1 | テキスト |   | URL | |||||
| $2 | テキスト |   | HTTPヘッダー + HTTPボディ(32 KBまで) | |||||
| $3 | テキスト |   | Webクライアント (ブラウザー) のIPアドレス | |||||
| $4 | テキスト |   | サーバーのIPアドレス | |||||
| $5 | テキスト |   | ユーザー名 | |||||
| $6 | テキスト |   | パスワード | |||||
| 戻り値 | ブール |   | True = リクエストを受け入れる, False = リクエストを拒否する | |||||
On Web AuthenticationデータベースメソッドはWebサーバーエンジンへのアクセス管理を担当します。このデータベースメソッドは、Webブラウザーからのリクエストがサーバー上の4Dメソッド (4DACTION URLや4DSCRIPT などを使用して呼び出されるメソッド) の実行を必要とするとき、4Dから呼ばれます。
このメソッドは6つのテキスト引数$1, $2, $3, $4, $5, $6を受け取り、ブール値を$0に返します。これらの引数の意味は以下のとおりです:
| 引数 | 型 | 説明 | 
| $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 if
  `On Web Authentication データベースメソッド
 C_TEXT($1;$2;$5;$6;$3;$4)
 C_TEXT($user)
 C_BOOLEAN($0)
 $0:=False
 $user:=$5
  `セキュリティのため@を含むユーザ名とパスワードは拒否
 If(WithWildcard($user))
    $0:=False
  `WithWildcard メソッドは後述
 Else
    QUERY([WebUsers];[WebUsers]User=$user)
    If(OK=1)
       $0:=Validate Digest Web Password($user;[WebUsers]password)
    Else
       $0:=False `User does not exist
    End if
 End if  `WithWildcard Method
  `WithWildcard ( 文字列 ) -> ブール
  `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
	テーマ: データベースメソッド
	
        
        
	

	変更: 4D v13