IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

Recuperer id authentification springsecurity [Security]


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 120
    Par défaut Recuperer id authentification springsecurity
    Bonjour,

    J'utilise springsecurity pour sécuriser mon application web, seulement j'aimerai pouvoir récuperer l'id de l'utilisateur authentifié... je sais que ça doit pouvoir se faire mais je n'y arrive pas...

    Merci par avance.

  2. #2
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Par défaut
    Je te conseille de regarder à la classe SecurityContextHolder
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 120
    Par défaut
    J'ai vu qu'il fallait que je redéfinisse le UserDetailsService mais étant débutant j'ai un peu de mal à savoir comment faire... si vous pouviez m'indiquez quelques pistes svp..

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 120
    Par défaut
    Bon voilà ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    import org.springframework.security.GrantedAuthority;
    import org.springframework.security.userdetails.User;
     
    /**
     *
     * @author NiKo
     */
    public class UserDetailsImpl extends User {
     
        private static final long serialVersionUID = 1L;
        private final Users user;
     
        public UserDetailsImpl(Users user, String username, boolean enabled, GrantedAuthority[] authorities)
                throws IllegalArgumentException {
            super(user.getUsername(), user.getPassword(), enabled, authorities);
            this.user = user;
        }
     
        public int getIdUser() {
            return user.getIdUser();
        }
     
        public String getLastname() {
            return user.getLastname();
        }
     
        public String getFirstname() {
            return user.getFirstname();
        }
     
        public String getEmail() {
            return user.getMail();
        }
     
        @Override
        public String getUsername() {
            return user.getUsername();
        }
     
        @Override
        public String getPassword() {
            return user.getPassword();
        }
     
        public boolean getEnabled() {
            return user.isEnabled();
        }
    }
    Et le service :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    public class UserDetailsServiceImpl implements UserDetailsService {
     
        private IUserService userDao;
        private Users user;
     
        public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException {
     
            List listUser = (List) userDao.getUserByUsername(username);
     
            Iterator itUser = listUser.iterator();
            while (itUser.hasNext()) {
                user = (Users) itUser.next();
            }
            return new UserDetailsImpl(user, null, false, null);
     
        }
     
        /**
         * @return the userDao
         */
        public IUserService getUserDao() {
            return userDao;
        }
     
        /**
         * @param userDao the userDao to set
         */
        public void setUserDao(IUserService userDao) {
            this.userDao = userDao;
        }
    et dans mon applicationContext.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <authentication-provider user-service-ref="myUserDetailsService"/>
     
        <beans:bean id="myUserDetailsService" class="service.UserDetailsServiceImpl">
            <beans:property name="userDao" ref="UserService">
            </beans:property>
        </beans:bean>
    Mais lorsque je compile j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    java.lang.IllegalArgumentException: Cannot pass a null GrantedAuthority array
    	org.springframework.util.Assert.notNull(Assert.java:112)
    	org.springframework.security.userdetails.User.setAuthorities(User.java:235)
    	org.springframework.security.userdetails.User.<init>(User.java:138)
    	org.springframework.security.userdetails.User.<init>(User.java:99)
    	org.springframework.security.userdetails.User.<init>(User.java:69)
    	entites.UserDetailsImpl.<init>(UserDetailsImpl.java:21)
    	service.UserDetailsServiceImpl.loadUserByUsername(UserDetailsServiceImpl.java:34)
    	org.springframework.security.providers.dao.DaoAuthenticationProvider.retrieveUser(DaoAuthenticationProvider.java:83)
    	org.springframework.security.providers.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:121)
    	org.springframework.security.providers.ProviderManager.doAuthentication(ProviderManager.java:188)
    	org.springframework.security.AbstractAuthenticationManager.authenticate(AbstractAuthenticationManager.java:46)
    	org.springframework.security.ui.webapp.AuthenticationProcessingFilter.attemptAuthentication(AuthenticationProcessingFilter.java:82)
    	org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:258)
    	org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89)
    	org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
    	org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	org.springframework.security.concurrent.ConcurrentSessionFilter.doFilterHttp(ConcurrentSessionFilter.java:99)
    	org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:175)
    	org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:183)
    	org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:138)
    Merci par avance.

  5. #5
    Membre expérimenté Avatar de aymen83
    Inscrit en
    Décembre 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 271
    Par défaut
    bonjour,

    ton bean UserDetailsImpl accepte dans son constructeur GrantedAuth... mais apparemment il est vide. Vérifie ta config.Et essai de remplir le tableau par des données que tu récupère soit d'un bean soit directement dans ta config.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 120
    Par défaut
    En fait je sais pas si ça peut venir de là mais j'ai utilisé le modèle de table necessaire à spring telle que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE users (
      username VARCHAR(50) NOT NULL PRIMARY KEY,
      password VARCHAR(50) NOT NULL,
      enabled BIT NOT NULL
    );
     
    CREATE TABLE authorities (
      username VARCHAR(50) NOT NULL,
      authority VARCHAR(50) NOT NULL
    );
     
    ALTER TABLE authorities ADD CONSTRAINT fk_authorities_users foreign key (username) REFERENCES users(username);
    Je sais pas s'il y a un lien...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/02/2008, 11h23
  2. recuperation de la structure d'une base
    Par pascalT dans le forum 4D
    Réponses: 7
    Dernier message: 07/06/2006, 15h32
  3. Réponses: 6
    Dernier message: 25/08/2004, 09h50
  4. recuperer la résolution de l'écran
    Par florent dans le forum C++Builder
    Réponses: 11
    Dernier message: 07/06/2002, 15h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo