Bonjour,

j'utilise spring security et j'ai un problème d'authentification avec les GrantedAuthority

Voici ma classe USER

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 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
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;
	}
 
}
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
 
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;
Et quand je tente de m'authentifier, je récupère l'erreur suivante:

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