Objetos de Dados Parametrizados
Em cenários típicos, os desenvolvedores restringem o acesso às linhas usando o objeto de dados WHERE
cláusula. Isso ocorre em tempo de design. O objeto de dados pode ser restringido em tempo de execução por critérios de vinculação de painel ou página. Por exemplo, um painel de linha única deve ser vinculado de forma que o objeto de dados retorne uma e somente uma linha. Independentemente disso, o usuário tem permissão para visualizar qualquer linha no objeto de dados fornecido, desde que não seja excluída pelo WHERE
cláusula.
Em alguns cenários, no entanto, os desenvolvedores podem precisar restringir o acesso a linhas de objetos de dados em tempo de design com base em critérios de vinculação fornecidos em tempo de execução. Nesses cenários, o usuário deve conseguir acessar apenas linhas que ele ou ela possa identificar.
Por exemplo, imagine um aplicativo de auto-registro que permite que os usuários criem contas. O aplicativo envia um email para um endereço de email fornecido pelo usuário. O email contém um link de volta para o aplicativo de auto-registro. O link em si contém um token secreto que é passado como critério de vinculação para a página de confirmação. Isso permite que o usuário visualize e confirme seu registro pendente.
No cenário de autorregistro, o desenvolvedor precisa garantir que o objeto de dados da página de confirmação esteja vinculado ao token secreto. Caso contrário, um usuário mal-intencionado poderia simplesmente remover o token secreto da URL para visualizar outros registros pendentes. Isso permitiria que o usuário confirmasse um registro para um endereço de email ao qual ele ou ela não tem acesso.
Para evitar que isso aconteça, o desenvolvedor precisa garantir que o usuário forneça seu token secreto ao consultar as confirmações pendentes. Isso pode ser feito usando um objeto de dados parametrizado.
Para criar um objeto de dados parametrizado, o desenvolvedor deve indicar que uma ou mais colunas são "binding". Em tempo de execução, antes de executar o evento Filter, App Builder irá afirmar que o cliente forneceu valores para cada coluna de ligação. Se um valor de coluna de ligação não foi fornecido, App Builder lançará uma exceção. Isso impede que usuários — mal-intencionados ou não — executem uma consultar que recupere cada linha do objeto de dados. No exemplo de autorregistro, o usuário user só pode recuperar uma confirmação pendente se ele ou ela já souber o token secreto.
Problemas e Limitações Conhecidos
- Os desenvolvedores não podem usar a visualização Results para consultar um objeto de dados parametrizado. A visualização Results é executada sem nenhum critério de vinculação.
- Objeto de dados parametrizado Eventos não podem ser agendados. App Builder não fornece critérios de vinculação ao consultar o objeto de dados do Evento agendado.