UserDetails를 상속받아 구현하는 클래스의
getAuthorities() 메소드 내에 아래와 같이 권한을 주는 소스를 넣으면 된다.
GrantedAuthority는 getAuthority()메소드는 문자열(String)을 반환해준다.
UserRoleEnum role = user.getRole(); String authority = role.getAuthority(); SimpleGrantedAuthority simpleGrantedAuthority = new SimpleGrantedAuthority(authority); Collection<GrantedAuthority> authorities = new ArrayList <>(); authorities.add(simpleGrantedAuthority);
위와같이 권한을 넣어준다고 끝이아니다
이제 SecurityFilterChain나 시큐리티 설정 메소드를 구현하여 설정을 하여 권한에 맞는곳에만 들어갈수있도록 해주어야 GrantedAuthority를 이용하여 넣어준 의미가 있다.
통과시킬건 통과시키고 인증을 확인하겠다.
.antMatchers("/h2-console").permitAll()
//인증하지 않아도된다.(permitAll())
//ADMIN Authorization(ADMIN권한, ROLE_ADMIN)-3가지 방법
//.antMatchers("/admin/**").hasRole("ROLE_ADMIN")
//.antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')")
.antMatchers("/admin/**").hasAnyAuthority("ROLE_ADMIN")
//hasAnyAuthority권한을 확인하겠다.ROLE_ADMIN라면 권한이 ADMIN인 관리자만
//만약 ROLE_PRIMIUM이라면 PRIMIUM고객만 페이지를 접속할수있도록 해줄수 있다.
.anyRequest().authenticated()
//authenticated() 인증이 되어야 통과된다는 뜻이다.
인증절차가 필요한것부터 다 확인하고 나면 무조건 통과시키겠다.
.antMatchers("/h2-console").authenticated()
//authenticated() 인증이 되어야 통과된다는 뜻이다.
//ADMIN Authorization(ADMIN권한, ROLE_ADMIN)-3가지 방법
//.antMatchers("/admin/**").hasRole("ROLE_ADMIN")
//.antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')")
.antMatchers("/admin/**").hasAnyAuthority("ROLE_ADMIN")
//hasAnyAuthority권한을 확인하겠다.ROLE_ADMIN라면 권한이 ADMIN인 관리자만
//만약 ROLE_PRIMIUM이라면 PRIMIUM고객만 페이지를 접속할수있도록 해줄수 있다.
.anyRequest().permitAll()