close

Trust Me!! Trust You!!


  • Blog
  • Local Log
  • Tag Cloud
  • Key Log
  • Guestbook
  • RSS Feed
  • Write a Post
  • Admin

혹시 블로그 스킨이 깨져 보이시나요? 최신버전의 Internet Explorer(Windows용), Opera, Firefox를 사용해보세요.

Found 1 article(s) for 'spring security'.

  1. 2015/09/21 Spring login 처리하기 (Spring security 적용)

Spring login 처리하기 (Spring security 적용)

웹 프로그래밍
2015/09/21 15:08
 

스프링 프레임워크만으로 권한 처리를 하려면 꽤 골치가 아프다.

사용자의 role을 조회해서 사용자VO에 넣어주고, 또 페이지마다 권한이 있는지 없는지 체크해줘야하고

신경써야할것이 매우 많다!

 

그러나 Spring security는 로그인시 인증과 권한 처리를 도와준다.

인증이라 함은 해당 사용자가 등록된 사용자인지 아닌지를 가려주는 것을 말하고

권한 처리는 사용자의 역할별로 연결되는 페이지를 다르게 해주는 것이다.

그래서 오늘은 spring security를 이용한 login 처리를 해보도록 하겠다.

 

먼저 spring security의 버전을 선택해야 한다.

나의 경우에는 spring security는 3.2.6.RELEASE 버전을 사용했고

spring은 4.0.2.RELEASE 버전을 사용했다.

1. spring security 라이브러리 추가 

1. pom.xml에 spring security 라이브러리를 추가한다.

1.1 dependency 추가

<dependency>

     <groupId>org.springframework.security</groupId>

     <artifactId>spring-security-web</artifactId>

     <version>3.2.6.RELEASE</version>

    </dependency>

    <dependency>

     <groupId>org.springframework.security</groupId>

     <artifactId>spring-security-config</artifactId>

     <version>3.2.6.RELEASE</version>

    </dependency>

 

1.2 dependencyManagement 추가 (충돌방지를 위하여 추가함)

 <dependencyManagement>

     <dependencies>

       <dependency>

        <groupId>org.springframework</groupId>

        <artifactId>spring-framework-bom</artifactId>

        <version>4.0.2.RELEASE</version>

        <type>pom</type>

        <scope>import</scope>

       </dependency>

     </dependencies>

 </dependencyManagement>

 

 

2. filter 등록

 

2. web.xml에 spring security 필터를 등록한다.

  <filter>

   <filter-name>springSecurityFilterChain</filter-name>

   <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

  </filter>

  <filter-mapping>

   <filter-name>springSecurityFilterChain</filter-name>

   <url-pattern>/*</url-pattern>

  </filter-mapping>

 

3. context 생성 및 등록

3.1 security-context.xml을 생성한다.

<?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"

 xmlns:mvc="http://www.springframework.org/schema/mvc"

 xmlns:context="http://www.springframework.org/schema/context"

 xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/m ··· -4.1.xsd

  http://www.springframework.org/schema/security http://www.springframework.org/schema/s ··· -3.2.xsd

  http://www.springframework.org/schema/beans http://www.springframework.org/schema/b ··· eans.xsd

  http://www.springframework.org/schema/context http://www.springframework.org/schema/c ··· -4.1.xsd">

 

<mvc:annotation-driven/>

 <security:http auto-config="true">

    <security:intercept-url pattern="/teacher/*" access="ROLE_USER" />

    <security:form-login login-page="/login" default-target-url="/teacher/main"

    authentication-failure-url="/loginFail"/>

    <security:logout logout-success-url="/logout"/>

 </security:http>

 

 <security:authentication-manager>

  <security:authentication-provider user-service-ref="memberService" />

 </security:authentication-manager>

 

 <context:component-scan base-package="com.spring" />

</beans>

 

 

 

 intercept-url : 권한적용할 곳 정보

  - access : 접근가능한 권한

 login-page : 로그인 페이지

 default-target-url : 로그인 후 이동할 페이지

 authentication-failure-url : 로그인 실패시 이동할 페이지

 logout-success-url : 로그아웃시 이동할 페이지

 

 

3.2 web.xml의 context-param value에 security-context.xml 등록한다.

나같은 경우에는 param-value를 /WEB-INF/spring/*-context.xml 로 변경해주었다.

 

 <context-param>

  <param-name>contextConfigLocation</param-name>

  <param-value>/WEB-INF/spring/*-context.xml

  </param-value>

 </context-param>

 

 4. UserDetailsService 구현

 

4. UserDetailsService를 구현한다.

DB에 등록된 role 정보가 ROLE_USER일 경우 ROLE_USER로, 아닌경우 ROLE_USER2로 생성하기 위하여 아래와 같이 작성하였다.

@Service

public class MemberService implements UserDetailsService{

 @Autowired

 private UserDaoMapper userdao;

 

 @Override

 public UserDetails loadUserByUsername(String username)

   throws UsernameNotFoundException {

 

  UserVO vo = userdao.findUser(username);

  String userPwd = vo.getUserPwd();

  String role = vo.getUserType();

  System.out.println("userPwd : " + userPwd);

  System.out.println("role : " + role);

  Collection<SimpleGrantedAuthority> roles = new ArrayList<SimpleGrantedAuthority>();

  if("ROLE_USER".equals(role))

   roles.add(new SimpleGrantedAuthority("ROLE_USER"));

  else

   roles.add(new SimpleGrantedAuthority("ROLE_USER2"));

 

  UserDetails user = new User(username, userPwd, roles);

  return user;

 }

}

 

 

 

여기까지 마쳤으면 사용자 정보를 가져오기 위한 dao와 sql을 작성하고,

로그인, 로그아웃, 로그인 실패 페이지를 각각 작성해주면 spring security 적용이 완료된다.

이올린에 북마크하기
TAG security, spring, spring security, 스프링 인증
No received trackback. / No comment.

Trackback Address :: http://viper150.cafe24.com/trackback/261

You can also say.

Prev 1 Next
블로그 이미지
이것저것 불펌금지도 퍼다가 담습니다. 외부에 비공개된 페이지 입니다. By. 어른왕자

카테고리

  • 전체 (298)
    • 사는 이야기 (115)
    • 웹 프로그래밍 (102)
    • App 프로그래밍 (22)
    • IT 뉴스&기타 (22)
    • 박한별 (4)
    • 역사&기타지식 (9)

태그목록

  • spring+titles
  • 탭추가
  • jstl
  • 의료기기
  • MenuBar
  • java doc
  • tiles
  • 아이유
  • 계산
  • 달걀찜
  • 눈피로
  • 여성
  • 노트5
  • 부부관계
  • 우문술
  • 훈장
  • 픽슬러
  • 김용환
  • Windows
  • List
  • 너클볼
  • 보배드림
  • svn connector
  • substr
  • Ajax
  • 미국
  • 변화구
  • jQuery
  • V30
  • 사진

최근에 올라온 글

  • 보험사의 조정신청 대응방법.
  • 어느 천재의 앞선 시선.
  • [병맛더빙] 누구게..... (1)
  • 韓경제 `회색 코뿔소` 상황...
  • SVN Connector 설치 URL.
  • 군대를 가지 않는 서울대생.
  • “운은 하늘의 귀여움 받는...
  • 목장에서 알바하다가 캐스...
  • [펌]믿고 거르는 관상.
  • 하루에 1세트씩 하면 좋다...

최근에 달린 댓글

  • 배우 김정현은 길지 않은 연기... 김정현 04/10
  • 정세균 국무총리는 4일 신종... 정세영 04/07
  • <p> '학폭을 인정한 적 없는'... 이가흔 04/05
  • 장동민은 "물론 전문가분들도... 장동민 04/02
  • <p> '맛남의 광장' 한고은이... 박수홍 04/02

최근에 받은 트랙백

  • Solace Salts Bold Tobacco. Solace Salts Bold Tobacco 03/29
  • read this post from Bookie 7. read this post from Bookie 7 02/28
  • công ty may đồng phục. công ty may đồng phục 01/08
  • Israelnightclub`s recent blo... Israelnightclub`s recent blo.. 01/06
  • Suggested Browsing. Suggested Browsing 01/06

글 보관함

  • 2019/03 (1)
  • 2018/12 (1)
  • 2018/09 (1)
  • 2018/08 (1)
  • 2018/02 (1)

달력

«   2021/04   »
일 월 화 수 목 금 토
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

링크

  • Total : 265306
  • Today : 24
  • Yesterday : 52
Tattertools
Eolin
rss

어른왕자's blog is powered byTattertools1.1.2.2 : Animato