본문 바로가기
Spring/Spring 기초

시큐리티 자동로그인 구현

by 미눅스[멘토] 2023. 8. 18.
728x90

 

security-context.xml에 작성

      <!-- 자동 로그인
      	로그인하면 특정 시간 동안 로그인 할 필요가 없는 기능,
	    dataSource(root-context.xml)를 통해 지정한 데이터베이스의 약속된 테이블(PERSISTENT_LOGINS)을
	         이용하여 기존 로그인 정보를 기록함  	
	         
	    token-validity-seconds : 쿠키의 유효시간(초). 604800초는 7일
       -->
      <security:remember-me data-source-ref="dataSource"
       token-validity-seconds="604800" <!--7일동안 로그인 하겠다-->
      />

이때  <security:remember-me data-source-ref="여기가"

root-context.xml에 id와 일치해야한다

 

root-context.xml

	<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" 
		destroy-method="close">
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
		<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe" />
		<property name="username" value="jspexam" />
		<property name="password" value="java" />
	</bean>

 

 

security-context.xml 로그아웃일때

<!-- <security:access-denied-handler error-page="/security/accessError" /> -->
    <!-- 로그아웃 처리. 로그아웃 후에 세션을 무효화 함-->
    <security:logout logout-url="/logout" invalidate-session="true"
    delete-cookies="remember-me,JSESSION_ID" />
   </security:http>
   
   <!--

 

 

 

SQL 테이블 생성(테이블 이름도 정해져있음 무조건 이거 써야함)

CREATE TABLE PERSISTENT_LOGINS(
    USERNAME VARCHAR2(200),
    SERIES VARCHAR2(200),
    TOKEN VARCHAR2(200),
    LAST_USED DATE,
    CONSTRAINT PK_PL PRIMARY KEY(SERIES)
);

 

 

 

name값을 무조건 remember-me로 지정한다.(이것도 정해져있음 약속임)

<div class="col-8">
	<div class="icheck-primary">
		<input type="checkbox" id="remember" name="remember-me"> <label
		for="remember"> Remember Me </label>
	</div>
</div>