Bonjour,
j'utilise spring security et j'ai un problème d'authentification avec les GrantedAuthority
Voici ma classe USER
Voici ma class Role
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 @Entity @Table(name="MEMBRE") public class Membre implements UserDetails, Serializable { ................... private ArrayList<Role> authorities; @ManyToMany @JoinTable( name="MEMBRE_ROLE", joinColumns={@JoinColumn(name="id_membre", referencedColumnName="id_membre")}, inverseJoinColumns={@JoinColumn(name="id_role", referencedColumnName="id_role")}) public Collection<Role> getAuthorities() { return this.authorities; } public void setAuthorities(ArrayList<Role> authorities) { this.authorities = authorities; } ................ }
voici ma table MEMBRE_ROLE
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 @Entity @Table(name="ROLE") public class Role implements GrantedAuthority, Serializable { /** * */ private static final long serialVersionUID = 4160725609927520747L; private Integer id; private String role; @Transient public String getAuthority() { return this.role; } @Id @GeneratedValue @Column(name = "id_role", unique = true, nullable = false, precision = 9, scale = 0) public Integer getId() { return this.id; } @Column(name = "role", nullable = false, length = 20) public String getRole() { return this.role; } public void setId(Integer id) { this.id = id; } public void setRole(String role) { this.role = role; } }
Et quand je tente de m'authentifier, je récupère l'erreur suivante:
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 CREATE TABLE IF NOT EXISTS `MEMBRE_ROLE` ( `id_role` INT NOT NULL AUTO_INCREMENT , `id_membre` INT NOT NULL), PRIMARY KEY (`id_role`, `id_membre`) , CONSTRAINT `fk_membre_role_membre` FOREIGN KEY (`id_membre` ) REFERENCES `membre` (`id_membre` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_membre_role_role` FOREIGN KEY (`id_role` ) REFERENCES `role` (`id_role` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8;
org.springframework.security.authentication.InternalAuthenticationServiceException: IllegalArgumentException occurred while calling setter for property [domain.Membre.authorities (expected type = java.util.ArrayList)]; target = [domain.Membre@1807f3f2], property value = [[domain.Role@16cc0706, domain.Role@88b48]] setter of domain.Membre.authorities; nested exception is IllegalArgumentException occurred while calling setter for property [domain.Membre.authorities (expected type = java.util.ArrayList)]; target = [domain.Membre@1807f3f2], property value = [[domain.Role@16cc0706, domain.Role@88b48]]
je comprend que le setter n'est pas bien défini, mais je n'ai pas trouvé une solution et je ne sais pas si je ma façon d'utiliser mes GrantedAuthority est correcte ou pas. Merci d'avance pour vos suggestions
Partager