로그인 권한 처리

로그인 권한 처리

그 전에는 권한 처리가 없어서

role이 ADMIN이어도 로그인시 /amdin 페이지로 이동이 안되었음

이걸 해결해보자

롸..?

'ADMIN' 안됨 'ROLE_ADMIN' 이라고 해줘야 인식함.. 뭐?

WebSecurityConfig.java

// admin에 대한 요청은 전부, role이 ADMIN인 유저만이 사용가능하다.
// 인증이 안될경우 403 에러가 뜸
// 'ADMIN' 안됨 'ROLE_ADMIN' 이라고 해줘야 인식함.. 뭐?
.antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')")		

저렇게 access를 줘도 되고

또다른 방법이 있음

Controller 메소드에 직접적으로 Role을 부여하는 법

WebSecurityConfig.java

@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true) 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
}

@EnableGlobalMethodSecurity 이것임!

  • 최신 기술로 요즘엔 이거 많이씀 , securedEnabled = true 로 쓰면 컨트롤러에서 (@Secured("ROLE_ADMIN")) 이렇게 씀
  • 또는 prePostEnabled = true 는 컨트롤러에서 @PreAuthorize("haseRole('ROLE_ADMIN')") 라고 쓰면됨

MainCotroller.java

	@PreAuthorize("haseRole('ROLE_ADMIN')")
	@Secured("ROLE_ADMIN")
	@RequestMapping("/info")
	public @ResponseBody String info(Model model) {
		return "개인정보";
	}

오.. 두번째 방법이 훨 쉽고 직관적이니 이걸 쓰는걸로

좋은 웹페이지 즐겨찾기