Ir para o conteúdo

 Voltar a Jaguar - Des...
Tela cheia

Configuração de autenticação

29 de Janeiro de 2011, 14:20 , por Desconhecido - | 1 Pessoa seguindo este artigo.
Visualizado 33 vezes

Olá a todos... vou começar pelas informações.

Acompanhando o raciocinio do modulo B no que diz respeito a autenticação, estou usando Realm do TomCat . Primeiro, cria-se as tabelas de usuarios e perfis de usuarios.

create table usuario{

id_usuario integer,

login varchar,

senha varchar

};

 create table perfil{

login varchar,

perfil varchar

}

Lembrando que a integridade entre Usuario e Perfil fica no campo login.

 Então no arquivo server.xml, fiz o seguinte:

 <Realm className="org.apache.catalina.realm.JDBCRealm"
       debug="99" driverName="driver.banco.Driver"
       connectionURL="jdbc:banco://endereco:numporta/nomebanco"
       connectionName="usuariobanco"
       connectionPassword="senhabanco"
       userRoleTable="tabela_perfil" roleNameCol="nome_perfil"
       userTable="usuariosSistema" userNameCol="login" userCredCol="senha"/>

 Até aí tudo bem. Agora vem as minhas duvidas:

 1 - Gostaria de criar outros perfis além dos existentes(admin, AreaTecnica,Membros etc), como proceder? Se houver algum pdf do livro informando isso é só me dizer, não precisa responder aqui.

2 - Inicialmente havia criado o cadastro de usuários como Tabular. Foi aí que senti a necessidade de se criar o campo Perfil(por causa da mudança de estratégia de autenticação). Tem como refatorar sem deletar tudo e começar do zero? Sei que agora existe a necessidade de transformar em Agregação Simples, só queria aproveitar o que já fiz.

 

Obrigado

 

Wagner Abreu

Autor: Wagner Petronio de Sousa Abreu


1212 comentários

  • 329e5741b8d227cf8279e0e9b54444fc?only path=false&size=50&d=404Arthur Cesar Oreana(usuário não autenticado)
    31 de Janeiro de 2011, 10:04

     

    Olá Wagner, bom dia!

    Pergunta: Gostaria de criar outros perfis além dos existentes(admin, AreaTecnica,Membros etc), como proceder?

    Resposta: Segundo entendi, você alterou o Realm para o JDBCRealm, correto!? Para incluir outro perfil, basta incluir a linha na tabela responsável por armazenar os perfis e depois relacionar um usuário qualquer para esse novo perfil.

     

    Pergunta: Inicialmente havia criado o cadastro de usuários como Tabular. Foi aí que senti a necessidade de se criar o campo Perfil (por causa da mudança de estratégia de autenticação). Tem como refatorar sem deletar tudo e começar do zero? Sei que agora existe a necessidade de transformar em Agregação Simples, só queria aproveitar o que já fi.

    Resposta: Sim, tem como refatorar, mas tudo vai depender do seu nível de conhecimento do framework para saber quais são os arquivos certos. No livro são explicados todos os detalhes de cada uma das lógicas do Jaguar e quais os artefatos gerados para cada uma delas.

    Sugiro que você crie uma nova lógica do tipo Agregação Simples (CRUD) para conhecer esses artefatos e a partir daí tirar suas próprias conclusões sobre as diferenças entre esses tipos de aplicações.

    ps: sobrando um tempo vamos trabalhar na elaboração de um roteiro explicando o passo-a-passo para esse cenário que você citou.

    Abraços e ótima semana!

    • 591f98d33b38bf56ff639b6e6732c23d?only path=false&size=50&d=404Wagner Petronio de Sousa Abreu(usuário não autenticado)
      31 de Janeiro de 2011, 12:21

       

      Andei estudando um pouco mais a fundo, e pensei na seguinte estratégia:

       

      - Criar um mapeamento objeto-relacional para Perfil;

      - Considerar esse mapeamento bidirecional entre Usuario e Perfil, ou seja, um Usuario possuir um Perfil e o Perfil estar associado a um Usuario;

      - Sobrescrever o método inserirAntes de UsuarioManager(filho de AppManager), e (por escolha minha), antes da inclusão de um novo usuário, informar os dados de um novo perfil do tipo Membros;

       - Feito isso, só precisaria me preocupar na alteração, pois iria trocar a caixa de texto por uma combo estática. É aí onde ainda eu teria muita segurança em refatorar. Pensei até em tipo enumerado, já que a quantidade de perfis é tão pequena.

       Muito obrigado pela colaboração.

       

      Wagner Abreu

      • 591f98d33b38bf56ff639b6e6732c23d?only path=false&size=50&d=404Wagner Petronio de Sousa Abreu(usuário não autenticado)
        31 de Janeiro de 2011, 12:23

         

        Uma pequena correção na postagem anterior,

         

        onde se lê "É aí onde ainda eu teria muita segurança em refatorar."

         

        leia-se "É aí onde ainda eu NÃO teria muita segurança em refatorar."

         

        Wagner Abreu

        • B82229c2a028fa4403ffd4939b08c31b?only path=false&size=50&d=404Anna Carolina Duarte(usuário não autenticado)
          31 de Janeiro de 2011, 15:56

           

          Wagner,

          qualquer dúvida, estaremos à disposição!

          abs.

           

           

          • 591f98d33b38bf56ff639b6e6732c23d?only path=false&size=50&d=404Wagner Petronio de Sousa Abreu(usuário não autenticado)
            31 de Janeiro de 2011, 16:46

             

            Só gostaria de saber como pegar uma instância de algum DAO que eu implementar, como no exemplo abaixo:

             

            public NovoDAO implements INovoDAO extends PlcBaseJpaDAO{

             ...

            }

             

            public class MeuManager extends AppManager{

                public void meuMetodo(){

                     INovoDAO novoDAO = ?

                }

            }

             

            Obrigado

             

            Wagner Abreu

            • 329e5741b8d227cf8279e0e9b54444fc?only path=false&size=50&d=404Arthur Cesar Oreana(usuário não autenticado)
              31 de Janeiro de 2011, 19:04

               

              Wagner, boa tarde!

              Para recuperar um DAO dentro de um Manager, siga o exemplo abaixo:

              public class NovoManager extends AppManager {

                 private NovoDAO novoDAO;

                 public NovoManager () {

                 }

                 @Inject
                 public NovoManager (NovoDAO novoDAO) {
                    this.novoDAO = novoDAO;
                 }

                 ...

              }

              Abraços!

        • 329e5741b8d227cf8279e0e9b54444fc?only path=false&size=50&d=404Arthur Cesar Oreana(usuário não autenticado)
          31 de Janeiro de 2011, 19:10

           

          Wagner, boa tarde!

          Sugestão: dê uma olhada em tomc​at.a​pach​e.or​g/to​mcat​-6.0​-doc​/rea​lm-h​owto​.htm​l#JD​BCRe​alm e crie as tabelas no seu banco de dados como descrito nesse link.

          Depois faça o mapeamento objeto-relacional das tabelas de usuario, perfil (que não está no link acima mas é elegante você ter, para o usuário não ter que digitar na mão e correr o risco de entrar com valores errados) e perfil_usuario. Crie uma aplicação CRUD para manutenção de usuários, perfis e relacionamento entre usuários e perfis.

          Nessa última aplicação você coloca tanto o usuário quanto o perfil como campos vinculados, para abrir a janela modal de pesquisa, e daí inclui na tabela de perfil_usuario.

          Qualquer dificuldade no roteiro acima, exponha sua dúvida aqui que podemos fazer o passo-a-passo juntos.

          Abraços!

          • 591f98d33b38bf56ff639b6e6732c23d?only path=false&size=50&d=404Wagner Petronio de Sousa Abreu(usuário não autenticado)
            1 de Fevereiro de 2011, 9:45

             

            Bom dia, Arthur, 

            Muito obrigado pela dica...vou seguir essa implementação. Se tiver ainda alguma dúvida, entrarei em contato.

             

            Wagner

            • 591f98d33b38bf56ff639b6e6732c23d?only path=false&size=50&d=404Wagner Petronio de Sousa Abreu(usuário não autenticado)
              13 de Fevereiro de 2011, 17:22

               

              Olá Arthur, tô de volta, meus amigos!!!

               

              Vamos lá, acrescentei algumas coisas em meu Domain Model, mas não fugindo do que realmente desejo:

               

              Fiz o caso de uso manter usuários(um crud simples). Entre seus atributos, existe um do tipo Entidade.

              Fiz um caso de uso manter entidades, mestre-detalhe, tendo com detalhes uma lista de perfis(É possível em um mestre detalhe buscar o detalhe usando um campo vinculado?).

              Fiz o caso de um caso de uso Manter Perfil do Usuario.Eu fiz o mapeamento objeto relacional do PerfilUsuario considerando uma chave composta, Usuario e Perfil(se esse negócio de chave embutida não funcionar realmente, por favor me digam).
              Primeiro a aplicação ficou reclamando da falta da existencia de uma campo detalhePlc_Det1, em PerfilUsuarioEntity. Criei manualmente um atributo com esse nome do tipo Object(não sei se isso atende). Beleza, até a hora em que eu apertei no F9. A listagem veio, mas por baixo, apareceu o seguinte no log do tomcat:

              ERROR [PlcEntityInstance] jCompany. Erro fatal ao tentar montar link de edicao do VO wagner para propriedade usuario. Erro original: java.lang.NullPointerException 15:53:17,255 [http-8080-5]   
               java.lang.NullPointerException
                  at com.powerlogic.jcompany.config.metamodel.PlcEntityInstance.getLinkEdicaoPlc(PlcEntityInstance.java:593)
                  at com.powerlogic.jcompany.controle.util.rest.PlcRestRendererUtil.montaObjetoJSON(PlcRestRendererUtil.java:198)
                  at com.powerlogic.jcompany.controle.util.rest.PlcRestRendererUtil.montaColecaoJSON(PlcRestRendererUtil.java:102)
                  at com.powerlogic.jcompany.controle.jsf.rest.PlcSelecaoRest.montaRetorno(PlcSelecaoRest.java:283)
                  at com.powerlogic.jcompany.controle.jsf.rest.PlcSelecaoRest.recuperaSelecao(PlcSelecaoRest.java:192)
                  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
                  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                  at java.lang.reflect.Method.invoke(Method.java:597)
                  at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:119)
                  at org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:211)
                  at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:176)
                  at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:166)
                  at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:359)
                  at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:336)
                  at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:103)
                  at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:114)
                  at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:70)
                  at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
                  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
                  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
                  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
                  at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
                  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
                  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
                  at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:421)
                  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
                  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
                  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
                  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
                  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
                  at java.lang.Thread.run(Thread.java:619)
              #isiat# ERROR [PlcEntityInstance] jCompany. Erro fatal ao tentar montar link de edicao do VO wagner para propriedade perfil. Erro original: java.lang.NullPointerException 15:53:17,260 [http-8080-5]   
               java.lang.NullPointerException
                  at com.powerlogic.jcompany.config.metamodel.PlcEntityInstance.getLinkEdicaoPlc(PlcEntityInstance.java:593)
                  at com.powerlogic.jcompany.controle.util.rest.PlcRestRendererUtil.montaObjetoJSON(PlcRestRendererUtil.java:198)
                  at com.powerlogic.jcompany.controle.util.rest.PlcRestRendererUtil.montaColecaoJSON(PlcRestRendererUtil.java:102)

              E quando seleciono um perfil de usuário já cadastrado, a tela de edição vem com os campos em branco.

              Quando eu cliiquei no botão do campo vinculado, a popup abriu, porém sem mostrar nada.

              Esse é só o primeiro problema. Poderia passar o segundo problema, mas vou esperar alguma resposta para esses primeiros(se for possível claro).

              Obrigado

              • 591f98d33b38bf56ff639b6e6732c23d?only path=false&size=50&d=404Wagner Petronio de Sousa Abreu(usuário não autenticado)
                17 de Fevereiro de 2011, 9:50

                 

                Bem, sem esperar por respostas, tentei diversas vezes... até que consegui! Só tem um pequeno problema. Percebi que a popup do campo vinculado abre, mas em branco. Porém, se eu informar na caixa de texto o campo código, o campo vinculado é preenchido. Fiz no Windows XP(JCompany Preview) e no Linux(Ubuntu 9.04). A popup abre no Windows numa boa. Mas eu quero que funcione no linux! Alguém dessa vez pode me responder como solucionar? Obrigado

                • 329e5741b8d227cf8279e0e9b54444fc?only path=false&size=50&d=404Arthur Cesar Oreana(usuário não autenticado)
                  18 de Fevereiro de 2011, 14:03

                   

                  Olá Wagner, boa tarde!

                  Você pode enviar o seu projeto para o meu e-mail? Daí posso te ajudar melhor e ver o que é que está acontecendo... Meu e-mail é aoreana@gmail.com

                  Abraços e ótimo final de semana!

                  • 591f98d33b38bf56ff639b6e6732c23d?only path=false&size=50&d=404Wagner Petronio de Sousa Abreu(usuário não autenticado)
                    19 de Fevereiro de 2011, 13:00

                     

                    Obrigado por oferecer ajuda, Arthur...

                     Tentando descobrir como resolver o problema, tive a curiosidade de tentar expandir a popup aberta. Percebi que os campos de busca apareceram! Então existe alguma tela que cobre a popup por inteiro. Tá bem mais fácil de resolver agora! Lembrando que isso só acontece no linux.

Lançamento do Jaguar 6.1 eminente...

6 de Maio de 2012, 8:13, por Desconhecido

O Jaguar 6.1 traz um grande leque de inovações dentre eles os exclusivos Jaguar Extensions, que possibilitam que plugins de arquitetura sejam criados com elegância através de técnicas de OCP (Open/Closed Principle). Este mecanimo possibilita que as implementações hiper-produtivas para Padrões de Caso de Uso de alto nível do Jaguar sejam expandidas através de componentes que encapsulam novos padrões, tanto para a parte OO (framework) quanto de geração de código complementar!



Evento Jaguar em Brasília, no dia19/10

3 de Outubro de 2011, 9:34, por Desconhecido

Quem estiver em Brasília no dia 19/10 não deixe de investir uma manhã neste evento, que é bem prático (mão na massa para desenvolver uma aplicação "do zero" com Java EE 6 / Jaguar) e traz insights importantes sobre tendências para a próxima década (BPMN 2.0, CMIS, Web Mobile com HTML5, etc.), implementados via Jaguar Extensions.



Ibrowse lança ferramenta de migração dos aplicativos desenvolvidos em Oracle Forms/Reports para o ambiente Jaguar

19 de Agosto de 2011, 16:37, por Desconhecido

A ferramenta lançada é o Telescope for Jaguar na modalidade SaaS, que visa a automação no processo de migração dos aplicativos desenvolvidos em Oracle Forms/Reports para o ambiente Java EE 6 na arquitetura Jaguar, que é uma das soluções do Portal do Software Publico.



Treinamento Jaguar em Brasília

27 de Julho de 2011, 14:47, por Desconhecido

Autor: Anna Carolina Duarte



A Ibrowse em parceria com a Universidade Luterana do Brasil (ULBRA) realiza o 1º curso de extensão em Jaguar

11 de Julho de 2011, 15:35, por Desconhecido

Autor: Justino Paulo