- 스프링 시큐리티 표현식
- 인증 및 권한 정보에 따라 화면을 동적으로 구성
- 로그인한 사용자 정보를 보여줄 수 있음
- 표현식
- hasRole("ROLE_MEMBER") : 해당 룰이 있는가?
- hasAnyrole(["ROLE_MEMBER", "ROLE_AUTH"]) : 여러 룰들 중 하나라도 해당하는가?
- principal : 인증된 사용자의 사용자 정보(UserDeails 인터페이스)
- authentication : 인증된 사용자의 인증 정보
- permitAll : 모든 사용자에게 허용
- denyAll : 모든 사용자에게 거부
- isAnonymous() : 로그인 하지 않아도 해당됨
- isAuthenticatied() : 로그인 해야 해당됨
- isFullyAuthenticated() : 일반적(remember-me) 방법을 인증된 사용자일 경우 true
security-context
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:security="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="customLoginSuccess"
class="kr.or.ddit.security.CustomLoginSuccessHandler"></bean>
<bean id="customAccessDenied"
class="kr.or.ddit.security.CustomAccessDeniedHandler"></bean>
<bean id="customUserDetailService"
class="kr.or.ddit.security.CustomUserDetailService"></bean>
<bean id="customPasswordEncoder"
class="kr.or.ddit.security.CustomNoOpPasswordEncoder"></bean>
<security:http>
<security:intercept-url pattern="/cus/detail"
access="hasRole('ROLE_MEMBER')" />
<security:form-login login-page="/login"
authentication-success-handler-ref="customLoginSuccess" />
<security:access-denied-handler ref="customAccessDenied" />
<security:remember-me data-source-ref="dataSource"
token-validity-seconds="604800" />
<security:logout logout-url="/logout" invalidate-session="true"
delete-cookies="remember-me.JSESSION_ID" />
</security:http>
<security:authentication-manager>
<security:authentication-provider user-service-ref="customUserDetailService">
<security:password-encoder ref="customPasswordEncoder" />
</security:authentication-provider>
</security:authentication-manager>
</beans>