<security:intercept-url> : 특정한 URI에 접근할 때 인터셉터를 이용해 접근을 제한
<!-- security-context.xml -->
<security:http>
<security:intercept-url pattern="/sample/all" access="permitAll"/>
<security:intercept-url pattern="/sample/member" access="hasRole('ROLE_MEMBER')"/>
<security:form-login/>
</security:http>
<security:authentication-manager/>
/sample/member 접근 시 스프링 시큐리티가 기본으로 제공하는 로그인 페이지(/login)로 이동
※ 스프링 시큐리티가 사용하는 username이나 User의 의미가 일반적인 시스템에서와 차이가 있다
인증 권한에 대한 실제 처리는 UserDetailsService를 이용해 처리 XML에서는 다음과 같이 설정
<!--security-context.xml-->
<security:authentication-manager>
<security:authentication-provider>
<security:user-service>
<!--member라는 계정 정보를 가진 사용자가 로그인을 가능케 함-->
<security:user name="member" password="member" authorities="ROLE_MEMBERS"/>
</security:user-service>
</security:authentication-provider>
</security:authentication-manager>
에러가 나는 이유는 5버전 부터 반드시 PasswordEncoder를 이용하도록 변경됨 인코딩 처리 없이 사용하고 싶다면 패스워드 앞에 {noop} 문자열 추가.
<!--security-context.xml-->
<security:user name="member" password="{noop}member" authorities="ROLE_MEMBERS"/>
브라우저에서 유지하고 있는 세션과 관련된 정보를 삭제
개발자도구 -> Application -> Cookies -> JSESSIONID삭제
<!--security-context.xml-->
<security:intercept-url pattern="/sample/admin" access="hasRole('ROLE_ADMIN')"/>
<security:user name="admin" password="{noop}admin" authorities="ROLE_MEMBER, ROLE_ADMIN"/>