O On Web Authentication database method administra o acesso ao motor do servidor web. É chamado automaticamente por 4D ou 4D Server quando uma petição de um navegador web pedir a execução de um método 4D no servidor (chamada de um método através um URL 4DACTION ou uma etiqueta 4DSCRIPT, etc.).
Este método recebe seis parâmetros de tipo Texto, passados por 4D: $1, $2, $3, $4, $5, e $6 e retorna um booleano, $0. A descrição desses parâmetros é a seguinte:
Parâmetros | Tipo | Descrição |
$1 | Texto | URL |
$2 | Texto | HTTP cabeçalho + corpo HTTP (32 KB máximo) |
$3 | Texto | endereço IP do Web client (navegador) |
$4 | Texto | endereço IP do servidor |
$5 | Texto | nome de usuário |
$6 | Texto | Senha |
$0 | Booleano | True = petição aceita, False = petição recusada |
Deve declarar esses parâmetros desta forma:
C_TEXT($1;$2;$3;$4;$5;$6)
C_BOOLEAN($0)
Nota: todos os parâmetros do Método de banco On Web Authentication não seriam preenchidos. A informação recebida pelo método de banco depende das opções que tiver selecionado previamente na caixa de diálogo de Propriedades do banco. Consulte a seção Conexões de Segurança.).
O primeiro parâmetro ($1) é a URL introduzida pelo usuário na área localização de seu navegador web, do qual o endereço local foi removido.
Tomemos o exemplo de uma conexão de Intranet. Suponhamos que o endereço IP de sua máquina servidor web 4D é 123.4.567.89. A seguinte tabela mostra os valores de ($1) dependendo da URL introduzida no navegador web:
URL inserida na área de localização do navegador | Valor do parâmetro $1 |
123.4.567.89 | / |
http://123.4.567.89 | / |
123.4.567.89/Clientes | /Clientes |
http://123.4.567.89/Clientes | /Customers |
http://123.4.567.89/Clientes/Adicionar | /Clientes/Adicionar |
123.4.567.89/Fazer_Isso/Se_OK/Fazer_Isso | /Fazer_Isso/Se_OK/Fazer_Aquilo |
- Cabeçalho e corpo da petição HTTP
O segundo parâmetro ($2) é o cabeçalho e o corpo da petição HTTP enviada pelo navegador web. Note que esta informação se passa ao On Web Authentication database method tal como está. O conteúdo varia em função do tipo de navegador web que esteja tentando a conexão. Se sua aplicação manipular esta informação, é sua decisão se analisa o cabeçalho e o corpo.
Notas:
- Por razões de rendimento, o tamanho dos dados que transita através do parâmetro $2 não deve superar os 32 KB. Do contrário serão truncados pelo servidor HTTP de 4D.
- Para mais informação sobre este parâmetro, consulte a descrição do On Web Connection database method.
- Servidor de endereço IP
O quarto parâmetro $4 recebe o endereço IP utilizado para chamar ao servidor Web. 4D a partir da versão 6.5 autoriza o multi-homing, permitindo explorar máquinas com mais de um endereço IP. Para maior informação, consulte a seção QR DELETE COLUMN.
- NOme de usuário e Senha
Os parâmetros $5 e $6 recebem o nome de usuário e senha introduzidos pelo usuário na caixa de diálogo padrão de identificação mostrada pelo navegador. Esta caixa de diálogo aparece para cada conexão, se uma opção de gestão de senhas tiver sido selecionada nas Propriedades da banco (ver a seção Conexões de Segurança).
Note: se o nome de usuário enviado pelo navegador existir em 4D, o parâmetro $6 (a senha do usuário) não é retornada por razões de segurança.
- $0 parameter
On Web Authentication database method retorna um booleano em $0:
- Se $0 for True, a conexão é aceita.
- Se $0 for False, a conexão é recusada.
O Método de banco On Web Connection database method só é executado se a conexão tiver sido aceita por On Web Authentication.
AVISO: se não for passado nenhum valor em
$0 ou se
$0 não se define no
On Web Authentication database method , a conexão se considerará como aceita e se executa o
On Web Connection database method.
Notas:
- Não chame elementos de interface no On Web Authentication database method (ALERT, DIALOG, etc.) porque do contrário sua execução será interrompida e a conexão será recusada. O mesmo acontece se for apresentado um erro durante seu processo.
- É possível evitar a execução por 4DACTION ou 4DSCRIPT de cada método de projeto com a ajuda da opção “Disponível através das etiquetas HTML e URLs. Para mais informação, consulte Conexões de Segurança.
O On Web Authentication database method é chamada automaticamente, sem importar o modo, quando uma petição ou processo requisitar a execução de um método 4D. Também se chama quando o servidor web recebe uma URL estática inválida (por exemplo, se a página estática solicitada não existir).
Portanto o On Web Authentication database method se chama nos seguintes casos:
- quando 4D recebe uma URL que começa por 4DACTION/
- quando 4D recebe uma URL que começa por 4DCGI/
- quando 4D recebe uma URL que começa por 4DSYNC/
- quando 4D recebe uma URL solicitando uma página estática que não existe
- quando 4D recebe uma URL de acesso a raiz e não foi definida uma página de início nas propriedades da base ou por meio do comando WEB SET HOME PAGE
- quando 4D processa uma etiqueta 4DSCRIPT em uma página semi dinâmica
- quando 4D processa uma etiqueta 4DLOOP baseada em um método em uma página semi dinâmica.
Nota de compatibilidade: o método banco também se chama quando 4D recebe um URL que começa por
4DMETHOD/. Esta URL é obsoleta e só se conserva por razões de compatibilidade.
Note que o On Web Authentication database method NÃO se chama quando o servidor recebe uma URL solicitando uma página estática válida.
Exemplo do On Web Authentication database methodInstalação e ativação em modo BASIC:
C_TEXT($5;$6;$3;$4)
C_TEXT($usuário;$senha;$IPNavegador;$IPServidor)
C_BOOLEAN($4Dusuário)
ARRAY TEXT($usuários;0)
ARRAY LONGINT($nums;0)
C_LONGINT($upos)
C_BOOLEAN($0)
$0:=False
$usuário:=$5
$senha:=$6
$IPNavegador:=$3
$IPServidor:=$4
If(WithWildcard($usuario)|WithWildcard($senha))
$0:=False
Else
GET USER LIST($usuários;$nums)
$upos:=Find in array($usuários;$usuário)
If($upos >0)
$usuario4D:=Not(Is user deleted($nums{$upos}))
Else
$usuario4D:=False
End if
If(Not($usuario4D))
QUERY([UsuariosWeb];[UsuariosWeb]usuario=$usuario;*)
QUERY([UsuariosWeb]; & [UsuariosWeb]senha=$senha)
$0:=(Records in selection([UsuariosWeb])=1)
Else
$0:=True
End if
End if
If(Substring($IPNavegador;1;7)#"192.100.")
$0:=False
End if
Exemplo do On Web Authentication database method em modo DIGEST:
C_TEXT($1;$2;$5;$6;$3;$4)
C_TEXT($usuario)
C_BOOLEAN($0)
$0:=False
$usuario:=$5
If(WithWildcard($usuario))
$0:=False
Else
QUERY([UsuariosWeb];[UsuariosWeb]usuario=$usuario)
If(OK=1)
$0:=Validate Digest Web Password($usuario;[UsuariosWeb]senha)
Else
$0:=False
End if
End if
O método de projeto WithWildcard é o seguinte:
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