지금까지 우리는 xml에 계정과 비밀번호를 직접 등록하여 사용했다. 하지만 우리가 상상하는 로그인은 이런게 아니라 DB속에 계정정보를 저장하여 유동적으로 사용하는 것을 꿈꾸었을 것이다. 이 포스팅에서는 드디어 스프링시큐리티와 DB를 연동하여 쿼리문을 통하여 계정정보를 조회하는 방법을 알아보도록 하겠다.
Mybatis를 이용한 DB연동
<beans:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<beans:property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<beans:property name="url" value="jdbc:mysql://127.0.0.1:3306/test"/>
<beans:property name="username" value="root"/>
<beans:property name="password" value="1234"/>
</beans:bean>
여기서는 마이바티스를 이용한 DB연동은 기본적으로 할줄 안다고 가정을 하고 대하여 자세히 다루지 않겠다.
디비를 연동하게되면 dataSource라는 이름으로 빈객체를 생성하는데 이 bean객체를 이용하여 Spring Security와 연동을 하게 된다.
제
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security.xsd">
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/user/**" access="hasAnyRole('ROLE_USER','ROLE_GUEST')"/>
<intercept-url pattern="/admin/**" access="hasRole('ROLE_ADMIN')"/>
<intercept-url pattern="/**" access="permitAll"/>
<form-login
username-parameter="id"
password-parameter="pw"
login-processing-url="/login"
login-page="/loginPage"
default-target-url="/all" />
<logout
logout-url="/logout"
logout-success-url="/all"
invalidate-session="true"
delete-cookies=""/>
</http>
<authentication-manager>
<jdbc-user-service data-source-ref="dataSource" id="userService"
users-by-username-query="SELECT ID as loginId, PASSWORD as loginPwd, ENABLED FROM user WHERE ID=?"
authorities-by-username-query="SELECT ID as loginID, AUTHORITY FROM user WHERE ID=?"/>
<authentication-manager>
<authentication-provider user-service-ref="userService">
</authentication-provider>
</authentication-manager>
<!--
<authentication-provider>
<user-service>
<user name="admin" password="{noop}admin" authorities="ROLE_ADMIN"/>
<user name="user" password="{noop}user" authorities="ROLE_USER"/>
</user-service>
</authentication-provider>
-->
</authentication-manager>
</beans:beans>
제목
내용작성
제목
내용작성
제목
내용작성
'Spring > Spring Security' 카테고리의 다른 글
[Spring Security] 4. 로그아웃(logout) 구현하기 (0) | 2020.02.07 |
---|---|
[Spring Security] 3. 내가만든 커스텀 로그인화면 사용하기 (0) | 2020.02.07 |
[Spring Security] 2. 권한설정 (0) | 2020.02.07 |
[Spring Security] 1. 기본설정 하기 (3) | 2020.02.07 |
댓글