본문 바로가기

spring framework 인프런강의

SpringMVC09 회원로그인 처리하기(스프링 내부 인증필터)

 

아...........................................

그만 좀 외우게 시켜라.........

머리 터질거 같음.....

 

로그인을 했다~~ 그러면 

securityconfig dp configure 함수 실행

 

그다음

가 실행

그다음 저 auth.userDetailsService(memberUserDetailsService()) 저 함수가 실행

그럼 저건 뭐지 싶어어 봤더만 바로 위에 있는거 함수 호출이네 

객체뱉애서 컨테이너에 저장하란거네

그럼 저 객체는 뭐지..?

이미 만들어 놓은거구나.. 

UserDetailsService 를 구현한 클래스 

여기서 membermapper.에 데이터베이스 갓다가 맴버객체로 받고

그다음

member 객채가 널이 아니면

리턴으로 new MemberUser(mvo) 로 맴버유저 객체 반환 

그럼 저건 또 뭐냐..

아.. UserDetails를 구현한게 User 클래스 이 User클래스를 상속받아서 오버라이딩해서 쓰는중.

하아...... 진짜 졸라 어렵게 만들어 놨네 왜이렇게 만들어 놓은거야 

스프링 만든사람은 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

그럼 수퍼 부모생성자로 User클래스에 정보를 넣어서 객채를 반환함

저거 this.member=mvo 는 저기서 쓸려고 저렇게 넣어둔것뿐임

 

 

 

 

 

그래서 MemberUser로 받아서 다시 MemberUserDetailsService로 돌아옴

자세히 풀면

이 리턴값을

 

받아서 시큐리티 컨텍스트에 넣는다고 한다

시큐리티 컨텍스트홀더라는 객채에 보면

시큐리티컨텍스트 여기에 객체바인딩이 된다고 한다 아......................................... 진짜 ..................

그만해....................

 그다음 .jsp에서 꺼내는 방법

 

 

저렇게 쓰면 된단다 

 

 

 

 

해보자

아 그리고 하기전에

로그인 로직 전부다 없애버리고 ㄱㄱ

 

일부로 틀리게 입력해봤다

error쿼리스트링 을 가져오자

    <!-- 실패 매세지를 띄우는 부분 -->
<div id="myMessage" class="modal fade" role="dialog">
    <div class="modal-dialog">
    <!-- Modal content-->
    <div  id="messageType" class="modal-content panel-info">
      <div class="modal-header panel-heading">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title">${msgType}</h4>
      </div>
      <div class="modal-body">
        <p >${msg}</p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
      </div>
    </div>
  </div>
</div>

 

아 씨............ 로그인 했는데 안된다 왜 안돼지 하아...... 진자 컴터 부셔버리고 싶다 

 

 

아 해냈다.... 고쳤다 ..

 

알고보니 

 

name에 password 속성값을 password로 바꿔야 동작이 된단다 ... 

아............. 미나ㅓㄹ미;ㄴ어리;럼니ㅏ;러ㅣㅏ;ㄴㅇ러미ㅏㅓ리ㅏ;너리ㅏ;머리;ㄴ어린어니ㅏ;ㅁ러닝ㅁ러

sdajflksdajflaslk;djfsljslkfjslkfjslk;dafjlkjflkjfaslk;fjlksdafjlkfjsdlkafjdlkfjdsl;fjaslkfjlk;dfjslk;fjkl;fjaslfjaslkfjdlkfjdlkaf

 

그다음 header.jsp수정하러 ㄱㄱ

 

 

 

 

 


<%@taglib prefix="security" uri="http://www.springframework.org/security/tags" %>
 </c:set var="mvo" value="${spring_security_context.authentication}">
</c:set var="auth" value="${spring_security_context.authentication.authorities}">

 

추가

 그밑에 mvo 주석처리하고 

세큐리티 태그 추가 

<security:authorize access="isAnonymous()"> 

</security:authorize>

<security:authorize access="isAuthenticated()">

      </security:authorize>

 

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="security" uri="http://www.springframework.org/security/tags" %>   
<c:set var="contextPath" value="${pageContext.request.contextPath}"/>
<c:set var="mvo" value="${SPRING_SECURITY_CONTEXT.authentication.principal}"/> 
<c:set var="auth" value="${SPRING_SECURITY_CONTEXT.authentication.authorities}"/> 
<nav class="navbar navbar-default">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>                        
      </button>
      <a class="navbar-brand" href="${contextPath}">SpringMVC09</a>
    </div>
    <div class="collapse navbar-collapse" id="myNavbar">
      <ul class="nav navbar-nav">
        <li class="active"><a href="${contextPath}">Home</a></li>
        <li><a href="boardMain.do">게시판</a></li>     
        <li><a href="#">Page 2</a></li>
      </ul>
  <security:authorize access="isAnonymous()">
      <ul class="nav navbar-nav navbar-right">
            <li><a href="${contextPath}/memberLoginForm.do"><span class="glyphicon glyphicon-log-in"></span> 로그인</a></li>
            <li><a href="${contextPath}/memberJoin.do"><span class="glyphicon glyphicon-user"></span> 회원가입</a></li>            
      </ul>
      </security:authorize>
      <security:authorize access="isAuthenticated()">
      <ul class="nav navbar-nav navbar-right">
            <li><a href="${contextPath}/memUpdateForm.do"><span class="glyphicon glyphicon glyphicon-wrench"></span> 회원정보수정</a></li>
            <li><a href="${contextPath}/memImageForm.do"><span class="glyphicon glyphicon glyphicon-picture"></span> 사진등록</a></li>
            <li><a href="javascript:logout()"><span class="glyphicon glyphicon-log-out"></span> 로그아웃</a></li>            
            <c:if test="${empty mvo.member.memProfile}">
      <li><img class="img-circle" src="${contextPath}/resources/images/person.png" style="width: 50px; height: 50px"/>
    </c:if>
    <c:if test="${!empty mvo.member.memProfile}">
      <li><img class="img-circle" src="${contextPath}/resources/upload/${mvo.member.memProfile}" style="width: 50px; height: 50px"/>
    </c:if>
     ${mvo.member.memName}님
     (
     <security:authorize access="hasRole('ROLE_USER')"> 
       U,
     </security:authorize> 
     <security:authorize access="hasRole('ROLE_MANAGER')"> 
       M,
     </security:authorize>  
     <security:authorize access="hasRole('ROLE_ADMIN')">
       A
     </security:authorize>
      )
    </li>
      </ul>
      </security:authorize>
    </div>
  </div>
</nav>

 

 

 

아 됬다.... 아 힘들어