Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    171

    Spring custom UserDetailsService

    salve a tutti.
    sto studiando Spring Boot dal libro Spring Boot in Action, sono arrivato nel punto in cui parla della configurazione della webSecurity.
    sto cercando di completare l'esempio esposto nel libro ma mi da un errore che non riesco a capire.

    nel file SecurityConfig nel metodo loadUserByUsername mi dice che il tipo di ritorno non è compatibile, ho provato a scaricare da git l'esempio del libro e mi da lo stesso problema, ora siccome sono nuovo di spring mi chiedo hanno sbagliano a fare l'esempio gli autori del libro oppure sono io che ho sbagliato qualcosa.

    spero come al solito nel vostro aiuto
    grazie


    i 3 file che il libro crea per gestire la security sono :


    SecurityConfig
    codice:
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Configuration;
    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.configuration.EnableWebSecurity;
    import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
    import org.springframework.security.core.userdetails.UserDetails;
    import org.springframework.security.core.userdetails.UserDetailsService;
    import org.springframework.security.core.userdetails.UsernameNotFoundException;
    
    @Configuration
    @EnableWebSecurity
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
    
        @Autowired
    private ReaderRepository readerRepository;
    
    
    @Override
    protected void configure(HttpSecurity http) throws Exception {
            http
                    //Required reader access(utente con diritti reader)
    .authorizeRequests()
                        .antMatchers("/")
                        .access("hasRole('READER')")
                        .antMatchers("/**")
                        .permitAll()
    
                    .and()
    
                    //set login form path
    .formLogin()
                        .loginPage("/login")
                        .failureUrl("/login?error=true");
    }
    
        @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
            auth
                    .userDetailsService(new UserDetailsService() {
                        @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
    
    
                            return readerRepository.findOne(username);
    }
                    });
    }
    }
    ReaderRepository
    codice:
    importorg.springframework.data.jpa.repository.JpaRepository;
    
    
    public interface ReaderRepository extends JpaRepository<Reader, String> {
    
    
    }
    Reader
    codice:
    import java.util.Arrays;
    import java.util.Collection;
    
    import javax.persistence.Entity;
    import javax.persistence.Id;
    
    import org.springframework.security.core.GrantedAuthority;
    import org.springframework.security.core.authority.SimpleGrantedAuthority;
    import org.springframework.security.core.userdetails.UserDetails;
    
    @Entity
    public class Reader implements UserDetails {
    
        private static final long serialVersionUID = 1L;
    
    @Id
    private String username;
        private String fullname;
        private String password;
    
        public String getUsername() {
            return username;
    }
    
        public void setUsername(String username) {
            this.username = username;
    }
    
        public String getFullname() {
            return fullname;
    }
    
        public void setFullname(String fullname) {
            this.fullname = fullname;
    }
    
        public String getPassword() {
            return password;
    }
    
        public void setPassword(String password) {
            this.password = password;
    }
    
        @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
            return Arrays.asList(new SimpleGrantedAuthority("ROLE_READER"));
    }
    
        @Override
    public boolean isAccountNonExpired() {
            return true;
    }
    
        @Override
    public boolean isAccountNonLocked() {
            return true;
    }
    
        @Override
    public boolean isCredentialsNonExpired() {
            return true;
    }
    
        @Override
    public boolean isEnabled() {
            return true;
    }
    
    }

  2. #2
    mancano gli override su getUsername/Password/FullName ma non penso sia quello. Stack dell'errore?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.