본문 바로가기
프로젝트/Spring Boot 블로그프로젝트

[블로그프로젝트] 16 스프링시큐리티로 로그인하기(3)

by dantriss 2023. 6. 5.

유튜브에서 블로그 만들기 프로젝트를 따라하면서 나의 스킬을 조금더 레벨업 하고자 한다.

IDE : IntelliJ

언어 : Java

DB : MySQL

빌드관리 도구 : Maven

OS : iOS

참고유튜브 : 메타코딩


스프링시큐리티를 사용하기 위해서 pom.xml에 해당 라이브러리들을 추가한다.

        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-taglibs</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

그리고 UserApiController.java으로 이동해서 기존 로그인 방식을 삭제나 주석으로 막자

 

그 후 메인페이지로 이동하려고 하면 아래와 같은 화면을 볼 수 있다.

스프링 시큐리티가 모든 접근을 막아 해당 페이지로 이동하게 된다.

username에는 user 를 입력하고

password에는 콘솔 중간에 나오는 비밀번호를 입력하면 된다.

 

콘솔을 확인

콘솔을 확인해보면 비밀번호를 확인할 수 있다.

 

username에는 user 비밀번호는 콘솔에 있는 비밀번호를 복사 붙여넣기해보자

 

그렇게하면 로그인을 할 수가 있다.

 

하지만 로그인을 할 때마다 콘솔에서 비밀번호를 복사하기 귀찮다.

application.yml 로 이동해서 아래 내용을 추가한다.

name 과 password는 본인이 입력하기 편한걸로 작성하면 된다.

  security:
    user:
      name: 1111
      password: 1111

 

그 후 서버를 다시 실행하면 이제 콘솔에서 비밀번호를 찾을 필요도 없고 비밀번호가 나오지도 않는다.

그리고 내가 입력한 아이디와 비밀번호를 입력하면 로그인이 된다.

 

header.jsp로 이동해서 해당 taglib을 추가한다.

아래링크에서도 taglib를 확인할 수 있다.

https://www.baeldung.com/spring-security-taglibs

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>

 

로그인 정보를 가져오기 위해서 아래 코드를 추가한다.

<sec:authorize access="isAuthenticated()">
    
    <sec:authentication property="principal" var="principal"/>

</sec:authorize>

 

해당부분을 바꾸었으니 ctaglib에 로그인한 유저정보가 없을때에 조건을 변경한다.

empty sessionScope.principal -> empty principal 로 변경한다.

    <c:when test="${empty principal}">
    <ul class="navbar-nav">
        <li class="nav-item"><a class="nav-link" href="/loginForm">LogIn</a></li>
        <li class="nav-item"><a class="nav-link" href="/signForm">SignUp</a></li>
    </ul>
    </c:when>

 

그렇다면 principal에는 어떠한 정보가 담겨져 있을까? 확인해보자

header.jsp에 body부분에 principal을 넣어보고 어떠한 값들이 출력되는지 알아보자

 

다시 서버를 실행하면 아래와 같은 정보들을 볼 수있다.

해당부분은 커스터마이징해서 사용할 수 있다.

 

 

댓글