본문으로 바로가기
반응형

tailwindCSS 를 적용하는 방법은 해당 글을 보면 된다.

 

 

# spring boot TailwindCSS와 연동하기, 사용방법

tailwindcss를 사용해서 앞단을 꾸며보자 tailwindcss를 사용하려면 또 복잡하다.. 안써볼 사람들은 넘어가면 된다. 일단 node.js가 난 이미 깔려있어서 괜찮은데 안깔려있으면 node.js는 무조건 설치하셔

somnote.tistory.com

 

그럼 이제 타임리프를 사용한 html과 컨트롤러를 만들어서 연결해주면 끝난다!

일단 소셜로그인이 필요하기 떄문에 로그인 화면을 1개 만든다.

 

참 타임리프 템플릿은 resources/templates 아래에 만들면 된다.

 

login.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>로그인</title>
    <link href="/css/output.css" rel="stylesheet">
</head>
<body class="bg-gray-100 min-h-screen flex flex-col items-center justify-center p-6">

<div class="bg-white rounded-xl shadow-md p-6 w-full max-w-md text-center">
    <h2 class="text-2xl font-bold text-gray-800 mb-4">소셜 로그인</h2>
    
    <div class="space-y-4 mt-4">
        <a href="/oauth2/authorization/google"
           class="block w-full py-2 bg-green-500 text-white rounded-lg font-semibold hover:bg-red-600 transition">
            구글로 로그인하기
        </a>
    </div>
</div>

</body>
</html>

 

그다음 로그인이 성공적으로 완료되면 접속될 페이지를 만든다

dashboard.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>대시보드</title>
    <link href="/css/output.css" rel="stylesheet">
</head>
<body class="bg-gray-100 min-h-screen flex flex-col items-center justify-center p-6">

<div class="bg-white rounded-xl shadow-md p-6 w-full max-w-md text-center">
    <h1 class="text-2xl font-bold text-blue-600 mb-2">안녕하세요!</h1>
    <p class="text-lg text-gray-700 mb-4" th:text="'환영합니다, ' + ${nickname} + '님 👋'">사용자명</p>
    
    <div class="space-y-4">
        <a href="/diet" class="block w-full py-2 bg-green-500 text-white rounded-lg font-semibold">기록하기</a>
        <a href="/study" class="block w-full py-2 bg-indigo-500 text-white rounded-lg font-semibold">언어공부하기</a>
    </div>
    
    <div class="mt-6">
        <a href="/logout" class="text-sm text-red-500 underline">로그아웃</a>
    </div>
</div>

</body>
</html>

다 만들었으면 이제 앞단과 연결할 컨트롤러를 만든다.

 

 

DashboardController

package com.example.demo.dashboard.controller;

import lombok.RequiredArgsConstructor;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.oauth2.core.user.OAuth2User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
@RequiredArgsConstructor
public class DashboardController {

    @GetMapping("/login")
    public String loginPage() {
        return "login";
    }

    @GetMapping("/dashboard")
    public String dashboard(Model model, @AuthenticationPrincipal OAuth2User principal) {
        if (principal != null) {
            String nickname = (String) principal.getAttributes().get("name"); // 구글 로그인 이름
            model.addAttribute("nickname", nickname);
        } else {
            model.addAttribute("nickname", "알 수 없음 사용자");
        }
        return "dashboard";
    }
}

 

이제 구글로그인을 클릭하면 정상적으로 로그인이 되고

만든 dashboard 페이지로 이동된다.

반응형