Ir para o conteúdo

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 tal 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 objeto de dados. WHERE cláusula.

Em alguns cenários, no entanto, os desenvolvedores podem precisar restringir o acesso às linhas do objeto de dados em tempo de design com base em critérios de ligação fornecidos em tempo de execução. Nesses cenários, o usuário só deverá poder acessar linhas que ele ou ela possa identificar.

Por exemplo, imagine um aplicativo de autorregistro que permite aos usuários criar contas. O aplicativo envia um email para um endereço email fornecido pelo usuário. O email contém um link para o aplicativo de autorregistro. O próprio link contém um token secreto que é passado como critério de ligação para a página de confirmação. Isso permite ao usuário visualizar e confirmar seu cadastro 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 ao usuário confirmar o registro de um endereço 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. Isto pode ser conseguido usando um objeto de dados parametrizado.

Para criar um objeto de dados parametrizado, o desenvolvedor deve indicar que uma ou mais colunas são "vinculativas". Em tempo de execução, antes de executar o evento Filter, o Vinyl irá afirmar que o cliente forneceu valores para cada coluna de ligação. Se um valor de coluna de ligação não tiver sido fornecido, o Vinyl lançará uma exceção. Isso evita que usuários – maliciosos ou não – executem uma consultar que recupere cada linha do objeto de dados. No exemplo de autorregistro, o usuário usuário só poderá recuperar uma confirmação pendente se já conhecer o token secreto.

Problemas Conhecidos e Limitações

  • Os desenvolvedores não podem usar a visualização Resultados para consultar um objeto de dados parametrizado. A visualização Resultados é executada sem nenhum critério de vinculação.
  • Os eventos do objeto de dados parametrizados não podem ser agendados. O Vinyl não fornece critérios de vinculação ao consultar o objeto de dados do Evento agendado.