Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Um sistema com múltiplas aplicações é um sistema onde vários projetos utilizam o mesmo banco de dados e compartilham informações. Como, por exemplo, ao cadastrar um usuário na aplicação A e definir que ele terá acesso as aplicações A e B, esse usuário passa a ter acesso a diferentes aplicações com um único cadastro.


Image RemovedImage Added

Figura 1 - Esquema de três aplicações que utilizam o mesmo bancoa mesma base de dados

Estrutura de classes

Na figura abaixo são exibidas as classes usadas para integrar múltiplas aplicações.

Image Removed

Figura 2 - Diagrama de classes

O modelo de dados das permissões de segurança consiste dos seguintes tipos de entidade (Figura 2):

Nome da Entidade

Descrição

ApplicationRepresenta uma aplicação.RoleRepresenta um grupo (função).SecurableRepresenta um permissionável.View

Representa um objeto do tipo View ao qual você quer aplicar controle de acesso através dos métodos de requisição HTTP.

UserRepresenta um usuário.Application UserAssocia usuários e aplicações, permitindo que o usuário tenha permissão diretamente ao conjunto de acessos do permissionável.

Relacionamentos entre entidades

Os tipos de entidade são relacionados entre si das seguintes formas:

  • Cada Application pode ter múltiplos Role associados.
  • Cada Application pode ter múltiplos Securable associados.
  • Cada Application pode ter múltiplos View associados.
  • Cada Application pode ter múltiplos User associados, e cada User pode estar associado a múltiplos Application. Esse relacionamento muitos-para-muitos é representado pela entidade ApplicationUser.

Tabelas

Abaixo são detalhados todos os campos das tabelas usadas pelo sistema Multi Applicações.

Application

Aplicação.

Coluna do Banco

Tipo

Função

id  TextoIdentificador único da aplicação.name TextoNome da aplicação.

Role

Grupo ou Função.

Coluna do Banco

Tipo

Função

id  TextoChave primária.builtin  LógicoO registro só pode ser alterado em tempo de desenvolvimento.membership_enabled  LógicoNovos membros podem ser inseridos no grupo (função).name  TextoNome do grupo (função).normalized_name  TextoCria uma cópia normalizada do nome do grupo (função), permitindo que o nome tenha com caracteres especiais.applicationTextoChave estrangeira da tabela Application.

A arquitetura das múltiplas aplicações (Figura 2) está diretamente relacionado às Permissões de Segurança do Cronapp, acesse a sua documentação para mais detalhes.

Image Added

Figura 2 - Diagrama de classes

Securable

Permissionável.

Coluna do Banco

Tipo

Função

id  TextoChave primária.nameTextoNome do permissionável.applicationTextoChave estrangeira da tabela Application.

View

Aplica o controle de acesso aos métodos de requisição HTTP.

Coluna do Banco

Tipo

Função

id  TextoChave primária.securable_id  TextoChave estrangeira da tabela Securable.pattern  TextoPágina ou local com o controle de acesso.getMethodAllowed  LógicoPermissão para o método get.headMethodAllowed  LógicoPermissão para o método head.putMethodAllowed  LógicoPermissão para o método put.postMethodAllowed  LógicoPermissão para o método post.patchMethodAllowed  LógicoPermissão para o método patch.deleteMethodAllowed  LógicoPermissão para o método delete.optionsMethodAllowed  LógicoPermissão para o método options.traceMethodAllowed  LógicoPermissão para o método trace.applicationTextoChave estrangeira da tabela Application.

Application User

Tabela de relacionamento entre Aplicação e Usuários.

Coluna do Banco

Tipo

Função

id  TextoChave primária.applicationTextoChave estrangeira da tabela Application.userTextoChave estrangeira da tabela User.

Configuração

Banco de dados

O banco de desenvolvimento H2 já vem configurado por padrão, porém o mesmo não persiste os dados. Por isso dados configurado nos projetos modelos não persistem os dados, por isso, é necessário cadastrar outrobanco de dados de qualquer Fabricante, exceto H2. No menu do projeto vá até Projeto, selecione Banco Clique no botão de atalho do Banco de Dados (destaque 1 da Figura 3) e , depois clique em Novo (2) e preencha os campos com as informações do seu banco. Utilize a documentação Banco de dados para qualquer dúvida. Após criá-lo, o banco de dados ficará disponível na lista (destaque em amarelo3).


Aviso
titleImportante

Após cadastrar o banco no projeto

A

1, é indispensável utilizá-

los

lo nos outros projetos para ocorrer a integração entre eles.


Image RemovedImage Added

Figura 1 3 - Criando banco de dados

Diagrama

Após criar o banco de dados, abra o Abra o Diagrama de dados (app), selecione o banco no vinculado ao diagrama (destaque 1 da Figura 4) , e gere a camada de persistência (2). Escolha a opção "Utilizar tabelas existentes" (3), caso contrário, os dados do banco, que estão sendo usados nos outros projetos serão excluídos, podem ser excluídos. Também é possível obter as classes a partir da Engenharia reversa do banco de dados cadastrado.

Repita esse procedimento em todos os projetos.


Image RemovedImage Added

Figura 2 4 - Gerando camada de persistência no novo banco de dados


Nota
titleObservação

O Para que a integração seja possível, o diagrama de dados de todos os projetos deve conter as mesmas classes que serão compartilhadas com os mesmo atributos para que a integração seja possível.


Âncora
gerarCRUD
gerarCRUD

Em seguida, selecione a o menu de contexto da classe Application, clique no botão direito sobre a classe e selecione a opção  e clique em Criar visão para entidade (destaque 1 da Figura 34.1).  Na , ao abrir a janela Assistente de View pra Entidade, escolha o modelo de formulário Formulário CRUD Web (2) e depois selecione no campo Formulário de Referência a pasta admin (2 (3), selecione o diretório Administrativo (Localização: Formulário/Web/Administrativo/

Tooltip
onlyIcontrue
appendIconinfo-circle

Endereço: src/main/webapp/views/admin

). Por fim, clique em Avançar e depois em Finalizar.

Repita esse procedimento em todos os projetos. ÂncoragerarCRUDgerarCRUD

Image Removed


Image Added

Figura 4Figura 3.1 - Criando CRUD do permissionáveldas aplicações


Essa página possibilitará consultar as aplicações que estão Na aplicação essa página possibilita visualizar todas as aplicações integradas, ou seja, que estão utilizando o sistema de múltiplas aplicações.

Recomendação


Dica

Se for necessário criar permissionáveis ou grupos específicos para uma aplicação, isso deve ser

criado

feito nas

Permissões

Permissão de Segurança

antes de rodar o projeto pela primeira vez. Após criá-los, será necessário gerar CRUDs (Figura 3

.

1) das classes Role e Securable no Diagrama de Dados.

Aplicação

Execute todos os projetos que deseja vincular. Após rodar o projeto A, basta basta executar a segunda aplicação pela primeira vez que os dados são serão atualizados automaticamente no banco de dados, através do conteúdo contido no populate.json (visível apenas no Modo Avançado).

Vincular usuários

Abra uma a aplicação A e vá até a página de Usuários. Adicione um novo usuário e, no campo Aplicações, associe as aplicações A e B (Figura 3.25) e salve.

Ao escolher as aplicações, o usuário também aparecerá na grade de Usuários das aplicações informadas. Se nenhuma aplicação for informada, o usuário terá acesso apenas na origem.

Image Removed

Figura 3.2 - Vinculando usuários

Efetuando


Image Added

Figura 5 - Vinculando aplicações na tela de edição do usuário na aplicação A

Efetuar login

Abra a aplicação B e, na tela de Login (Figura 5.1), acesse com os dados do usuário cadastrado na primeira aplicação A


Image RemovedImage Added

Figura 35.3 1 - Efetuando login com na aplicação B utilizando o sistema multi aplicações

uNesta página

Índice