userDetatils 구현한 org.srpingframework.security.core.userdetails.User를 보자
보면
이렇게 구현되어 있다.
userDetails를 implement 할라면
getAuthorities()를 구현해야 되는데
이부분이 잘 이해가 안갔었다
GrantedAuthority 는 인터페이스이며
구현체가 총 3개잇다.
그중 simple 을 보자
public final class SimpleGrantedAuthority implements GrantedAuthority {
private static final long serialVersionUID = SpringSecurityCoreVersion.SERIAL_VERSION_UID;
private final String role;
public SimpleGrantedAuthority(String role) {
Assert.hasText(role, "A granted authority textual representation is required");
this.role = role;
}
@Override
public String getAuthority() {
return this.role;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj instanceof SimpleGrantedAuthority) {
return this.role.equals(((SimpleGrantedAuthority) obj).role);
}
return false;
}
@Override
public int hashCode() {
return this.role.hashCode();
}
@Override
public String toString() {
return this.role;
}
}
String 타입인 role 변수 하나만 잇다
authority 와 role 의 관계는
여기서 확인햇다..
초록색 글씨에 적혀잇듯이
hasRole은 앞에 "ROLE_" 이 붙고
hasAuthority는 String 생으로 들어간다
그래서 userdetails를 구현한 객체를 디스크나 메모리에 올려둘 때
이 배열에 ROLE_ 을 앞에 붙이느냐 마냐에 따라서
ROLE과 Authority가 갈린다