programming/spring_security

[Spring Security] DB에서 로그인 정보 가져오기

labj 2016. 8. 18. 12:02

[Spring Security] DB에서 로그인 정보 가져오기 


sample3.zip

customer.sql

login.sql

customer_grade.sql


사용자는 회원가입을 통해서 로그인 아이디와 패스워드를 홈페이지의 Database에 저장하게 됩니다.

그리고 로그인을 통해서 홈페이지의 접속 권한을 가지게 됩니다.

 

Database를 이용하는 방법에 대해서 설명합니다.

Database는 MySQL을 이용하고 JSP에서 DB 접근을 하려면 JDBC를 이용하게 됩니다.

여기서는 XML을 사용하여 SQL문에 대한 객체 매핑을 지원하는 Persistence Framework인 MyBatis를 사용합니다.

MyBatis는 JDBC에서 처리하는 코드의 SQL을 XML을 통해서 파라미터 설정과 결과 매핑을 통해서 이용할 수 있도록 해줍니다.

 

Database를 설정하는 applicationContext-dao-config.xml입니다.

접속정보는 properties 파일로 따로 적을 수 있도록 합니다.

Database는 MySQL로 로컬(자신의 컴퓨터)에 설치합니다. DB명은 jobtoydb로 만들었습니다.

 

 

1. DB 설정 파일 복사하기

1) applicationContext-dao-config.xml, jdbc.properties 파일을 복사합니다.


웹프로젝트의 DB 설정 파일 : applicationContext-dao-config.xml


웹프로젝트의 DB 접속 정보 파일 : jdbc.properties

jdbc.driverClassName=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://127.0.0.1:3306/jobtoydb?characterEncoding=UTF-8

jdbc.username=dbuser

jdbc.password=password

 

 

2) applicationContext-dao-config.xml을 웹프로젝트에서 로딩하기 위해서 

root-context.xml에 import를 추가합니다. 



2. MyBatis 설정하기

1) MyBatis 사용을 위한 설정을 합니다. mybatis-context.xml을 spring 설정파일에 복사해 놓습니다.


2) mybatis-context.xml 을 로딩하기 위해서 web.xml에 다음 코드를 추가합니다. 



3) mybatis-context.xml 설정

mybatis-context.xml에는 다음 설정이 있는데 


① <property name="dataSource" ref="dataSource" />

DB 접속정보를 설정해둔 applicationContext-dao-config.xml의 id인 dataSource의 정보를 org.mybatis.spring.SqlSessionFactoryBean에 있는 dataSource로 사용할거라는 것입니다.


② <property name="mapperLocations" ref="classpath:mapper/*.xml" />

SQL문의 매핑을 위한 xml을 mapper 폴더에 있는 xml로 지정합니다. 


③ <property name="typeAliasesPackage" ref="com.jobtoy.domain" /> 

그리고 결과값을 담는 domain의 위치를 설정하였습니다.


xml에서 정의된 sql로 쿼리된 결과값을 도메인과 매핑시키기 위한 interface를 두는데 그 위치를 설정합니다.


com.jobtoy.mapper란 package를 만듭니다. 


4) CRUDMapper

Mapper 스캔을 도와주기 위한 CRUDMapper란 interface를 추가합니다. 



3. MyBatis로 로그인 정보 조회하기

이제 MyBatis를 이용해서 로그인 정보를 가져오도록 하겠습니다.


다음 파일을 복사해 놓습니다.

Customer.java

CustomerMapper.xml

CustomerMapper.java

CustomerService.java

CustomerServiceImpl.java


① Doamin

로그인시에 로그인 정보를 가지고 Customer 테이블을 조회하여 Customer 도메인에 이용자의 정보를 담게 됩니다. 



② 쿼리 xml과 mapper 파일을 작성합니다. 


여기에는 쿼리결과를 매핑해주는 mapper파일에 대한 정보가 있습니다. 


③ mapper 파일을 만듭니다. 


④ 자바 코드에서 로그인 정보를 조회합니다.

 

로그인 페이지에서 아이디와 패스워드를 입력하면 com.jobtoy.service.impl.UserDetailsServiceImpl 의 loadUserByUsername함수가 호출됩니다.

여기에 아이디와 패스워드를 가지고 이용자 정보를 조회합니다.

 

유저정보를 조회하기 위해서 Service를 만듭니다. 



4. Customer 테이블 조회하기


CustomerServiceImple.java


UserDetailsServiceImpl에서 CustomerService의 getLoginInfo 함수를 사용하기 위해서 

다음 코드를 추가합니다. 

정상적으로 조회가 되면 아이디에 해당하는 유저의 정보가 Customer에 담기게 됩니다. 

이제 로그인 된 유저정보를 이용 할 수 있습니다.

UserDetailsServiceImpl을 다음처럼 수정합니다.



 

5. 테스트하기

웹서버를 시작하고 로그인 페이지에 접속합니다. customer 테이블에 있는 아이디를 입력한 후에 로그인합니다.

정상적으로 로그인 되었다면 이름이 보일 것입니다.

 

로그인 페이지 


로그인 성공


[Spring Security] DB에서 로그인 정보 가져오기