Na maioria das aplicações, existe uma necessidade de controlo de acesso, dependendo do papel do utilizador. Nesta lição, veremos um exemplo da criação de um tal controlo para uma aplicação web. Como parte desta tarefa, terá de o fazer:

  • Definir o papel do utilizador
  • Dependendo da função, controlar a exibição dos itens do menu de navegação
  • Tornar impossível a navegação para páginas que não são acessíveis a uma função específica

Preparação inicial

Comecemos com a parte preparatória. Para a conveniência de uma configuração posterior, é necessário criar uma variável global que armazene informações sobre o utilizador actual. Assim, se precisar de fazer uma verificação, não precisará de contactar o backend todas as vezes e solicitar informações sobre o utilizador. Será suficiente ler os dados necessários a partir da variável global.


É necessário ter em conta as várias opções através das quais um utilizador autorizado pode entrar na aplicação:

  • Iniciar sessão como resultado de uma autorização bem sucedida na página Login.
  • Login como resultado do registo.
  • Login directo através de uma ligação a uma página específica para utilizadores já autorizados.

Em cada um destes casos, é utilizada uma consulta back end que devolve informações sobre o utilizador. No processo comercial correspondente, só é necessário adicionar uma Set Variable bloco para registar a variável global User_gv que criou anteriormente.

Este bloco é adicionado ao CheckAuth processo comercial para utilizadores autorizados, que está localizado no Prebuilt pasta na secção de processos empresariais.

Para entrar através das páginas de login ou de inscrição, o bloco é adicionado aos processos empresariais dos botões correspondentes.

Vamos verificar o resultado na página inicial da candidatura. Para tal, vamos adicionar um Label que cumprimentará o utilizador pelo nome e, dependendo da função, escreverá se ele é ou não administrador.

É necessário criar um processo de negócio que dispare quando qualquer Label é exibido (Label onShow gatilho).

  1. Expand User. Para informações sobre o nome e funções do utilizador.
  2. In Array. Para verificar se o utilizador em questão se encontra no menu Admins grupo.
  3. If-Else. Para variabilidade de acções em função dos resultados da verificação.
  4. Set Variable (String). Para criar uma variável String com um valor de "NOT " se o utilizador não for um membro do Admins grupo ou um valor vazio, se o for.
  5. Concat Strings (Multiple). Para criar uma frase completa como "Hi, Ken. You are NOT Admin".
  6. Label Update Properties. Para a exibição final desta frase na página.

Se tudo for feito correctamente, então com qualquer variante de entrada na página, o ecrã terá um resultado semelhante.

Controlo da visibilidade dos itens do menu

Agora chegou a altura de passar à parte principal. Vamos criar uma página destinada apenas a Admins e adicionar o item de menu correspondente (Admin Page) para ir a ele. A melhor solução é desactivar a sua visibilidade por defeito.

Usando o Navigate bloco, deve seleccionar a página criada no Page e descubra o ID desta página.

Neste exemplo, existe apenas uma página com acesso restrito, mas é melhor prever imediatamente a opção quando pode haver muitas páginas deste tipo e criar uma variável global só de leitura para armazenar a lista de páginas.

A seguir, é necessário criar o próprio processo empresarial (chamemos-lhe Set NavItem Visibility) para controlar a visibilidade dos itens do menu de navegação.

  1. Expand User. Para informações sobre as funções do utilizador.
  2. In Array. Para verificar se o utilizador em questão se encontra na página Admins grupo.
  3. For each loop. Para executar o laço para todas as páginas especificadas na variável global.
  4. NavItem Update Properties. Para controlar a visibilidade de um elemento, dependendo se o utilizador é um administrador.

O bloco do processo de negócio criado deve ser adicionado antes de ir para a página inicial nos processos de negócio dos botões de login e registo de utilizador (anteriormente, Set Variable foram-lhes adicionados blocos para registar uma variável com informação sobre o utilizador actual).

Controlo de acesso através de ligação directa

A última coisa a fazer é estabelecer um processo empresarial que é executado cada vez que a aplicação é lançada pelo "On app launch"gatilho". Tal como no passo anterior, adicionar o Set NavItems Visibility bloco para utilizadores autenticados.

Além disso, é necessário fornecer protecção contra o acesso a uma página fechada através de uma ligação directa:

  1. In Array (Admin_pages). Para verificar se a página alvo está na lista de páginas apenas de administrador.
  2. If-Else. Para variabilidade de acções, dependendo dos resultados da verificação. Se Falsepode navegar para a página especificada. No caso de Trueé necessária uma verificação adicional para o direito de acesso a esta página.
  3. Expand User. Para ler a informação do utilizador a partir da variável global User_gv.
  4. In Array. Para verificar a filiação no grupo Admins.
  5. If-Else. Para seleccionar acções em função da presença de direitos de administrador ou da sua ausência.
  6. Navigate. Ir para a página requerida ou redireccionar para a página inicial no caso de um utilizador sem direitos apropriados tentar abrir uma página destinada apenas a administradores.

As páginas seleccionadas estão agora protegidas contra o acesso não autorizado. Na ausência de direitos, não são exibidas no menu e não podem ser acedidas mesmo através de uma ligação directa.

É importante lembrar que a protecção de acesso a determinadas páginas não significa protecção automática para os pontos finais que podem ser utilizados nessas páginas. Para o fazer, se necessário, no Middleware Token Auth é necessário especificar os grupos de utilizadores que têm direitos de acesso ao ponto final seleccionado.

Was this article helpful?

AppMaster.io 101 Curso de Crash

10 Módulos
2 Semanas

Não sabe por onde começar? Avance com o nosso curso intensivo para principiantes e explore o AppMaster de A a Z.

Iniciar curso
Development it’s so easy with AppMaster!

Precisa de mais ajuda?

Resolva qualquer problema com a ajuda de nossos especialistas. Economize tempo e concentre-se na criação de seus aplicativos.

headphones

Entre em contato com o suporte

Conte-nos sobre o seu problema, e nós encontraremos uma solução para você.

message

Bate-papo da comunidade

Discuta perguntas com outros usuários em nosso chat.

Junte-se à comunidade