ApplicationProxy - Substituindo informações em tempo de execução

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.

image

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 elemento NameFilter e informe true ou false no atributo ignoreCase 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âmetro SESSION.CodigoUsuario. Esta informação pode ser modificando especificando um valor no elemento UserCode.

  • Nome de Usuário
    Nome do usuário, referente ao parâmetro SESSION.LoginUsuario. Esta informação pode ser modificando especificando um valor no elemento UserName.

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.

Ao informar os valor dos elementos, lembre-se que caracteres especiais de um Xml, como por exemplo abertura e fechamento de tag, precisam ser "escapados" antes de serem informados.
1 curtida