반응형
최근 웹페이지들은 로그인할 때 '자동 로그인'이나 '로그인 기억하기'라는 이름으로 로그인 상태를 계속 유지하는 기능을 가지고 있습니다. 이 기능은 거의 대부분 쿠키로 구현하는데 스프링 시큐리티로도 구현이 가능합니다.
<security:remember-me> 태그를 사용하여 기능을 구현합니다.
데이터베이스 이용하는 자동로그인
security-context.xml의 일부
<bean id="customAccessDenied" class="com.security.security.
CustomAccessDeniedHandler"></bean>
<bean id="customLoginSuccess" class="com.security.security.
CustomLoginSuccessHandler"></bean>
<bean id="bcryptPasswordEncoder" class="org.springframework.
security.crypto.bcrypt.BCryptPasswordEncoder"></bean>
<bean id="customUserDetailsService" class="com.security.security.
CustomUserDetailsService"></bean>
<security:http>
<security:intercept-url pattern="/sample/all" access="permitAll"/>
<security:intercept-url pattern="/sample/member" access="hasRole('ROLE_MEMBER')" />
<security:intercept-url pattern="/sample/admin" access="hasRole('ROLE_ADMIN')"/>
<security:access-denied-handler ref="customAccessDenied"/>
<security:form-login login-page="/customLogin" authentication-success-handler-ref="customLoginSuccess"/>
<security:logout logout-url="/customLogout" invalidate-session="true"/>
<security:remember-me data-source-ref="dataSource" token-validity-seconds="604800"/>
</security:http>
<security:authentication-manager>
<security:authentication-provider
user-service-ref="customUserDetailsService">
<security:password-encoder ref="bcryptPasswordEncoder"/>
</security:authentication-provider>
</security:authentication-manager>
</beans>
- data-source-ref : DataSource를 지정하고 테이블을 이용해서 기존 로그인 정보를 기록
- token-validity-seconds : 쿠키의 유효시간을 지정합니다.
로그인 화면에 자동 로그인 설정
customLogin.jsp의 일부
<form action="/login" method="post">
<div>
<input type="text" name="username" value="admin90"/>
</div>
<div>
<input type="password" name="password" value="pw90"/>
</div>
<div>
<input name="remember-me" type="checkbox" />자동 로그인
</div>
<div>
<input type="submit"/>
</div>
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
</form>
이제 로그인을 해보면 쿠키에 'remember-me'라는 이름의 쿠키가 생성된 것을 볼 수 있습니다.
로그아웃 시 쿠키 삭제
security-context.xml의 일부
<security:http>
<security:intercept-url pattern="/sample/all" access="permitAll"/>
<security:intercept-url pattern="/sample/member" access="hasRole('ROLE_MEMBER')" />
<security:intercept-url pattern="/sample/admin" access="hasRole('ROLE_ADMIN')"/>
<security:access-denied-handler ref="customAccessDenied"/>
<security:form-login login-page="/customLogin" authentication-success-handler-ref="customLoginSuccess"/>
<security:logout logout-url="/customLogout" invalidate-session="true"/>
<security:remember-me data-source-ref="dataSource" token-validity-seconds="604800"/>
<security:logout logout-url="/customLogout" invalidate-session="true" delete-cookies="remember-me,JSESSION_ID"/>
</security:http>
반응형
'스프링' 카테고리의 다른 글
스프링 ZingChart 사용하기 (0) | 2019.07.18 |
---|---|
스프링 구글차트(Google Chart) 사용하기 (0) | 2019.07.18 |
스프링 시큐리티(spring security) JSP 사용(1) 표현식 (0) | 2019.06.26 |
스프링 시큐리티(spring security) 접근 권한 (0) | 2019.06.25 |
스프링 시큐리티(spring security) 로그인 (0) | 2019.06.25 |