Eu alguns casos, pode ser necessário alterar alguma informação da conexão de banco de dados em tempo de execução. O exemplo mais comum seria usar o nome do usuário do sistema para fazer a autenticação no banco de dados.
Neste tópico vamos aprender a fazer isso, utilizando o arquivo de configuração ApplicationProxy.xml
.
Visão Geral
O ApplicationProxy tem como objetivo permitir que algumas informações do sistema possam ser alteradas em tempo de execução, antes de serem utilizadas. Todas as requisição do site passam pelo processamento deste arquivo.
O Arquivo
O arquivo ApplicationProxy.xml
fica no servidor, na pasta raiz do site, e tem a seguinte estrutura:
<?xml version="1.0" encoding="utf-8"?>
<ApplicationProxy enabled="false" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Connections>
<Connection id="0" users="*">
<!--<NameFilter ignoreCase="true">Regular Expression</NameFilter>-->
<Properties>
<!-- Sobrescreve propriedades da Connection String (com suporte a uso de Variáveis Global) -->
<Property name="Property Name">Value</Property>
</Properties>
</Connection>
</Connections>
<SessionMarks users="*">
<UserCode>{?GVAR LATROMI.codigousuario}</UserCode>
<UserName></UserName>
</SessionMarks>
</ApplicationProxy>
Configuração
Habilitando e desabilitando
Use o atributo enabled
do elemento raiz para habilitar ou desabilitar o processamento do ApplicationProxy.
- Valores permitidos: true ou false.
- Valor padrão: false.
Modificando uma Conexão de Banco de Dados
Uma conexão de banco de dados pode ser modificada usando o elemento Connection
, que pode se repetir várias vezes dentro do elemento Connections
.
Caminho completo:
ApplicationProxy → Connections → Connection
Filtros
A primeira coisa a se fazer para modificar uma conexão é determinar quando ela deve ser modificada. Para isso podemos usar os seguintes filtros:
-
Nomes de Usuários
Nome dos usuários que devem ter a conexão modificada. Usuários que não estejam nessa lista vão ignorar o ApplicationProxy. Informe*
(asterisco) para selecionar todos os usuários ou informe uma lista com o nome dos usuários (login) separados por,
(vírgula). -
Nome da Conexão
Expressão regular para casar com o nome da conexão. Informe a expressão regular no elementoNameFilter
e informe true ou false no atributoignoreCase
para especificar se as diferenças entre letras maiúsculas e minúsculas devem ser ignoradas.OBS: Este elemento está comentado por padrão. Descomente para utilizar.
-
Id da Conexão
Informe o ID da Conexão, gravado internamente na tabela de conexões do sistema. Este filtro é menos recomendado pois exige que o ID seja consultado no banco de dados, pois ele não é exibido no sistema. Informe 0 (zero) para ignorar este filtro.
Modificando Propriedades
As propriedades da conexão são modificadas usando o elemento Property
, que pode se repetir várias vezes dentro do elemento Properties
Caminho completo:
ApplicationProxy → Connections → Connection → Properties → Property
Para preencher uma propriedade, informe o nome dela no atributo name
e o valor no interior do elemento. Por exemplo:
<Property name="Nome da propriedade">Valor</Property>
Os valore utilizados podem ser fixos, Parâmetros de Sessão ou Variáveis Globais.
Abaixo um exemplo de como substituir o nome do usuário da conexão pelo nome do usuário do sistema:
<Property name="Username">SESSION.LoginUsuario</Property>
A seguir, a lista de propriedades que podem ser alteradas
Nome | Descrição |
---|---|
Host | Servidor do banco de dados |
Port | Porta do servidor de banco de dados |
Database | Nome do banco de dados |
Username | Usuário de autenticação |
Password | Senha do usuário |
Modificando os Parâmetros de Sessão
Assim como os dados de conexão, também é possível modificar os parâmetros de sessão do usuário. Isso afeta o uso dos parâmetro do grupo “SESSION” no sistema.
Use o elemento SessionMarks
para modificar os parâmetro de sessão.
Caminho completo:
ApplicationProxy → SessionMarks
Filtros
A primeira coisa a se fazer para modificar uma parâmetro de sessão é determinar para quais usuários ele deve ser modificado. Para isso, usamos o filtro a seguir:
- Nomes de Usuários
Nome dos usuários que serão afetados. Usuários que não estejam nessa lista vão ignorar o ApplicationProxy. Informe*
(asterisco) para selecionar todos os usuários ou informe uma lista com o nome dos usuários (login) separados por,
(vírgula).
Modificando Propriedades
A modificação dos parâmetros de sessão está restrita a apenas dois campos:
-
Código do Usuário
Código externo do usuário, referente ao parâmetroSESSION.CodigoUsuario
. Esta informação pode ser modificando especificando um valor no elementoUserCode
. -
Nome de Usuário
Nome do usuário, referente ao parâmetroSESSION.LoginUsuario
. Esta informação pode ser modificando especificando um valor no elementoUserName
.
Abaixo um exemplo modificando o código e o nome do usuário de “admin” para “ROOT”:
<SessionMarks users="admin">
<UserCode>1</UserCode>
<UserName>ROOT</UserName>
</SessionMarks>
Se não quiser modicar nenhum parâmetro de sessão basta comentar deixando o código entre <!--
e -->
ou simplesmente remover do XML.