5
respostas

dúvida sobre restrição de páginas

olá!!

no curso vocês ensinam a restringir o cadastro somente para o ADMIN, existe alguma forma de restringir o acesso de outras paginas para outros perfis criando módulos, além do ADMIN?

por exemplo:

modulo da instituição - carrinho, produtos e pagamento. modulo professor - somente produtos.

Obrigada!!

5 respostas

Oi Lilian, vc precisa criar outras roles e associar os endereços com essas roles, da mesma forma que o cadastro está associado com o ADMIN.

Olá! Eu criei o perfil Instituição, porém está dando acesso negado, basicamente terá acesso ao cadastro também.

Pode dar o mesmo acesso a perfis diferentes?

Classe SecurityConfiguration:

package br.com.projeto.cuidandodaatencao.conf;

import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.http.HttpMethod;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
//import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;

import br.com.projeto.cuidandodaatencao.dao.UsuarioDAO;

@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Autowired
    private UsuarioDAO usuarioDao;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
        .antMatchers("/alunos/form").hasRole("ADMIN")
        .antMatchers("/alunos/CadastroAluno").hasRole("INSTITUICAO")
        .antMatchers("/alunos/CadastroAluno").hasRole("ADMIN")
        .antMatchers("/alunos/CadastroAluno").hasRole("INSTITUICAO")
        .antMatchers("/alunos").hasRole("ADMIN")
        .antMatchers("/alunos/**").permitAll()
        .antMatchers("/resources/**").permitAll()
        .antMatchers("/").permitAll()
        .anyRequest().authenticated()
        .and().formLogin().loginPage("/login").permitAll()
        .and().logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout"));

    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(usuarioDao)
            .passwordEncoder(new BCryptPasswordEncoder());

    }

    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers("/jquery/**"); 

    }




}

Obrigada!

Oi Lilian,

Você pode usar o método hasAnyRole. Ficaria assim:

.antMatchers("/alunos/CadastroAluno").hasAnyRole("ADMIN", "INSTITUICAO")

Veja se ajuda. Abraço

Pode por um acaso, criar e-mails diferentes com o mesmo perfil. Exemplo:

tem: adm@casadocodigo.com.br com o perfil de ADMIN.

e quero inserir:

lilian@casadocodigo.com.br com o perfil de ADMIN, isso pode? tem uma outra alternativa?

Obrigada

Oi Lilian, pode sim, sem problemas. Na verdade isso é o esperado, pois vários usuário podem ter o perfil USUARIO e possuirão o mesmo acesso, por exemplo.

Pode fazer assim tranquila.