Controle de acesso

7 respostas
E

Olá galera, então estou iniciando em programação java para web.
Fiz alguns cruds aqui já, mas quero saber agora como fica o esquema de autenticação no java e o controle de acesso dos usuários.
Quero que somente usuários com tal perfil tenham acesso a tais telas.
Ex:
Usuario_comum, telas como a de cadastro de usuários ele não pode acessar, só poderá ter acesso a tela de alterar o seu próprio cadastro.
Já um usuário com perfil de administrador pode acessar outras telas.

Como fica esse controle?

Abraço

7 Respostas

H

cara,
Nao espere nada implementado, mas… uma dica é vc ter uma entidade usuario quando tipo de usuario Y acessar os botoes alterar estarao desabilitados, quando usuario X acessar tudo estará habilitado, isso é uma questao de logica mesmo controlada pela tua aplicação nao tem pra onde correr.

att.

E

hvivox:
cara,
Nao espere nada implementado, mas… uma dica é vc ter uma entidade usuario quando tipo de usuario Y acessar os botoes alterar estarao desabilitados, quando usuario X acessar tudo estará habilitado, isso é uma questao de logica mesmo controlada pela tua aplicação nao tem pra onde correr.

att.

Beleza cara…fiz a tabela no banco de forma com que eu possa saber do usuário o seu perfil, as telas onde ele tem permissões e quais são essas.

Minha dúvida é de onde e como faço essa validação.É no bean?É na propria view?É no xml do faces junto as regras de encaminhamento?

V

Amigo,

Se vc estiver usando o JSF, é mais ou menos o seguinte: vc mapeia sua classe filtro (que faz a autenticação) no web.xml junto com a pasta de seu projeto onde vc quer controle de acesso. Ex:

<filter>
        <filter-name>FiltroLogin</filter-name>
        <filter-class>Pacote.Filtro</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>FiltroLogin</filter-name>
        <url-pattern>/Restrito/*</url-pattern>
    </filter-mapping>
    <filter>

Isso quer dizer que toda vez que um usuário tentar acessar páginas dentro do diretório Restrito, será executado a classe Filtro. E na classe filtro vc usaria mais ou menos assim:

public class Filtro implements Filter {


 public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {

     HttpServletRequest request = (HttpServletRequest) req;
         HttpSession session = request.getSession();

         // recupera o usuario logado da sessão
         String login = (String) Login.usuario; //Login seria uma classe que contem os dados do usuário, que seriam passados da view para o ManagedBean.
         RequestDispatcher dispatcher = null;

         //  tem usuario? 
         if( login == null )//Aqui poderia fazer uma comparacao de perfil, por exemplo.
         {
             //então envia para a pagina de acesso invalido
             dispatcher = req.getRequestDispatcher("/erroacesso.jsf");
         }
         else {
             // libera o acesso a pagina
             dispatcher = req.getRequestDispatcher( request.getRequestURI());

         }

         dispatcher.forward(req, resp);
     }

Seria mais ou menos assim. Agora existem frameworks que te auxiliam a fazer isso, como o Spring (é até aconselhado se sua aplicação for de grande porte). Não cheguei a usar, mas ouvi falar muito bem deste framework.

Espero ter ajudado!

Até +!

J

O uso do Spring Security é uma boa, vi esse tutorial aqui e pra quem quer começar e bem fácil.
Segue o link: http://www.loiane.com/2010/01/tutorial-comecando-com-spring-security/

E

vinnysoft:
Amigo,

Se vc estiver usando o JSF, é mais ou menos o seguinte: vc mapeia sua classe filtro (que faz a autenticação) no web.xml junto com a pasta de seu projeto onde vc quer controle de acesso. Ex:

<filter>
        <filter-name>FiltroLogin</filter-name>
        <filter-class>Pacote.Filtro</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>FiltroLogin</filter-name>
        <url-pattern>/Restrito/*</url-pattern>
    </filter-mapping>
    <filter>

Isso quer dizer que toda vez que um usuário tentar acessar páginas dentro do diretório Restrito, será executado a classe Filtro. E na classe filtro vc usaria mais ou menos assim:

public class Filtro implements Filter {


 public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {

     HttpServletRequest request = (HttpServletRequest) req;
         HttpSession session = request.getSession();

         // recupera o usuario logado da sessão
         String login = (String) Login.usuario; //Login seria uma classe que contem os dados do usuário, que seriam passados da view para o ManagedBean.
         RequestDispatcher dispatcher = null;

         //  tem usuario? 
         if( login == null )//Aqui poderia fazer uma comparacao de perfil, por exemplo.
         {
             //então envia para a pagina de acesso invalido
             dispatcher = req.getRequestDispatcher("/erroacesso.jsf");
         }
         else {
             // libera o acesso a pagina
             dispatcher = req.getRequestDispatcher( request.getRequestURI());

         }

         dispatcher.forward(req, resp);
     }

Seria mais ou menos assim. Agora existem frameworks que te auxiliam a fazer isso, como o Spring (é até aconselhado se sua aplicação for de grande porte). Não cheguei a usar, mas ouvi falar muito bem deste framework.

Espero ter ajudado!

Até +!

Era exatamente disso que eu estava falando.
Valeu cara, vou colocar no meu código aqui e fazer as adaptações.

Valeu mesmo!

E

jweibe:
O uso do Spring Security é uma boa, vi esse tutorial aqui e pra quem quer começar e bem fácil.
Segue o link: http://www.loiane.com/2010/01/tutorial-comecando-com-spring-security/

Valeu tbm cara…muito bom o tutorial mesmo, alias gostei desse blog.
Indica mais algum?

M

Comecei a estudar Java mês passado e ainda está muito complicado para mim entender o funcionamento deste controle de acesso, realmente é uma coisa que eu preciso aprender bastante ainda.

Gostei muito da sugestão acima.

Controle de Acessos

Criado 22 de abril de 2011
Ultima resposta 29 de abr. de 2011
Respostas 7
Participantes 5