
- WebExpressionVoter와 PIAAVoter가 주요. 나머지 2개는 deprecated될 것같음
RoleVoter
- Role 기반의 권한은 리눅스부터 아파치, 톰켓등 IT 초기부터 전통적으로 구현해서 사용하던 가장 직관적인 권한 체계입니다. 하지만, Role 을 기반으로 권한을 판단하기엔, 상황이 너무 다양해졌죠. 그래서 Role 을 확장한 Authority 기반의 권한 체계를 사용하고 있습니다. 그렇지만, 기존의 Role 기반이 가지고 있는 직관적이고 계층적인 사용성을 그대로 사용할 수 있도록 해주기 위해 RoleVoter가 쓰입니다.
AuthenticatedVoter
- 인증(통행증)을 받았다면 그 인증의 종류가 어떤 종류인지를 판단합니다. 이제 막 인증을 받고 들어온 사용자와 RememberMe 토큰을 통해서 들어온 사용자와 익명 사용자를 구분하기 위해 쓰입니다. RememberMe 인증 사용자는 탈취된 토큰을 가지고 들어온 사용자일 수 있기 때문에 필요한 경우 한번 더 인증을 요구할 수 있습니다.
SpEL을 사용하는 Voter (@PreAuthorize 어노테이션 기반)
Spring Expression Language
- 하지만 RoleVoter 는 SpEL을 사용하는 WebExpressionVoter 나 PIAAVoter (PreInvocationAuthorizationAdviceVoter)가 사용성을 대체하고 있습니다.

package com.sp.fc.web.config; import org.springframework.stereotype.Component; @Component public class NameCheck { public boolean check(String name){ return name.equals("jongwon"); } } @PreAuthorize("@nameCheck.check(#name)") public String message(String name){ return name; }