{"id":33193,"date":"2024-11-01T09:14:27","date_gmt":"2024-11-01T09:14:27","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=33193"},"modified":"2024-11-01T11:28:31","modified_gmt":"2024-11-01T11:28:31","slug":"spring-boot-backend-development-course-implementing-login-and-logout-with-spring-security-user-registration-creating-a-repository","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/33193\/","title":{"rendered":"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Creating a Repository"},"content":{"rendered":"<p><body><\/p>\n<p>Hello! In this blog post, we will learn how to develop a backend application using Spring Boot, implement login and logout functionalities with Spring Security, and add a user registration feature. We will also cover how to create repositories for interacting with the database. This course is suitable for everyone from beginners to intermediate learners.<\/p>\n<h2>1. What is Spring Boot?<\/h2>\n<p>Spring Boot is a framework that helps develop applications quickly based on the Spring Framework. By using Spring Boot, we can minimize complex configurations and swiftly create microservices or standalone applications. The main features of Spring Boot are:<\/p>\n<ul>\n<li><strong>Auto Configuration:<\/strong> Easily configure without complex XML settings through code and annotations.<\/li>\n<li><strong>Starters:<\/strong> Use starters that bundle the necessary dependencies for easy dependency management.<\/li>\n<li><strong>Ease of Deployment:<\/strong> Easily deployable as a standalone executable JAR file.<\/li>\n<\/ul>\n<h2>2. Setting Up the Project<\/h2>\n<p>You can quickly create a Spring Boot project using <a href=\"https:\/\/start.spring.io\/\">Spring Initializr<\/a>. Select the necessary dependencies, create a Maven project, and import it into your IDE. Below is a list of essential dependencies:<\/p>\n<ul>\n<li>Spring Web<\/li>\n<li>Spring Security<\/li>\n<li>Spring Data JPA<\/li>\n<li>H2 Database<\/li>\n<p> <!-- In-memory database that can be used for testing -->\n<\/ul>\n<h3>2.1 Creating the Project with IntelliJ<\/h3>\n<p>Let&#8217;s look at how to create a project using IntelliJ. First, open IntelliJ and follow these steps:<\/p>\n<ol>\n<li>Select File &gt; New &gt; Project<\/li>\n<li>Select Spring Initializr and click &#8216;Next&#8217;<\/li>\n<li>Enter Group, Artifact, Name, and click &#8216;Next&#8217;<\/li>\n<li>Select necessary dependencies and click &#8216;Finish&#8217;<\/li>\n<\/ol>\n<h2>3. Configuring Spring Security<\/h2>\n<p>Spring Security is a powerful framework that is used to add security features to Spring applications. It supports easy implementation of authentication and authorization functionalities. Here, we will implement basic login\/logout features.<\/p>\n<h3>3.1 Adding Spring Security Dependency<\/h3>\n<p>Although this dependency is already included in the dependencies selected from Spring Initializr, you can additionally add the Spring Security dependency in the pom.xml file if needed:<\/p>\n<pre><code>\n&lt;dependency&gt;\n    &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n    &lt;artifactId&gt;spring-boot-starter-security&lt;\/artifactId&gt;\n&lt;\/dependency&gt;\n<\/code><\/pre>\n<h3>3.2 Creating the SecurityConfig Class<\/h3>\n<p>To configure Spring Security, we create the `SecurityConfig` class. This class configures the security filter chain for Spring Security:<\/p>\n<pre><code>\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.security.config.annotation.web.builders.HttpSecurity;\nimport org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;\nimport org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;\n\n@Configuration\n@EnableWebSecurity\npublic class SecurityConfig extends WebSecurityConfigurerAdapter {\n    @Override\n    protected void configure(HttpSecurity http) throws Exception {\n        http\n            .authorizeRequests()\n                .antMatchers(\"\/login\", \"\/register\").permitAll() \/\/ Allow access to login and registration pages\n                .anyRequest().authenticated() \/\/ All other requests require authentication\n            .and()\n            .formLogin()\n                .loginPage(\"\/login\") \/\/ Set login page\n                .permitAll() \/\/ Allow all users to access\n            .and()\n            .logout()\n                .permitAll(); \/\/ Allow logout functionality\n    }\n}\n<\/code><\/pre>\n<h2>4. Implementing User Registration<\/h2>\n<p>To implement the registration feature, we will create a User entity and UserRepository. Then we will create a service that saves user information to the database.<\/p>\n<h3>4.1 Creating the User Entity<\/h3>\n<pre><code>\nimport javax.persistence.Entity;\nimport javax.persistence.GeneratedValue;\nimport javax.persistence.GenerationType;\nimport javax.persistence.Id;\n\n@Entity\npublic class User {\n    @Id\n    @GeneratedValue(strategy = GenerationType.IDENTITY)\n    private Long id;\n    private String username;\n    private String password;\n    \n    \/\/ getters and setters\n}\n<\/code><\/pre>\n<h3>4.2 Creating the UserRepository Interface<\/h3>\n<pre><code>\nimport org.springframework.data.jpa.repository.JpaRepository;\nimport java.util.Optional;\n\npublic interface UserRepository extends JpaRepository&lt;User, Long&gt; {\n    Optional&lt;User&gt; findByUsername(String username);\n}\n<\/code><\/pre>\n<h3>4.3 Implementing the Registration Service<\/h3>\n<p>We will create a UserService class to handle user information for registration:<\/p>\n<pre><code>\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;\nimport org.springframework.stereotype.Service;\n\n@Service\npublic class UserService {\n    @Autowired\n    private UserRepository userRepository;\n\n    private BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();\n\n    public void registerUser(User user) {\n        String encodedPassword = passwordEncoder.encode(user.getPassword());\n        user.setPassword(encodedPassword); \/\/ Encrypt password\n        userRepository.save(user); \/\/ Save user information\n    }\n}\n<\/code><\/pre>\n<h3>4.4 Implementing the Registration Controller<\/h3>\n<p>We will create a controller to handle registration requests:<\/p>\n<pre><code>\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.ui.Model;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.PostMapping;\nimport org.springframework.web.bind.annotation.ModelAttribute;\n\n@Controller\npublic class UserController {\n    @Autowired\n    private UserService userService;\n\n    @GetMapping(\"\/register\")\n    public String showRegistrationForm(Model model) {\n        model.addAttribute(\"user\", new User());\n        return \"register\"; \/\/ Redirect to registration page\n    }\n\n    @PostMapping(\"\/register\")\n    public String registerUser(@ModelAttribute User user) {\n        userService.registerUser(user); \/\/ Process user registration\n        return \"redirect:\/login\"; \/\/ Redirect to login page\n    }\n}\n<\/code><\/pre>\n<h2>5. Implementing View Templates<\/h2>\n<p>In Spring Boot, we mainly use Thymeleaf to create HTML templates. Let&#8217;s create view templates for the login and registration pages.<\/p>\n<h3>5.1 Login Page<\/h3>\n<pre><code>\n&lt;!DOCTYPE html&gt;\n&lt;html xmlns:th=\"http:\/\/www.thymeleaf.org\"&gt;\n&lt;head&gt;\n    &lt;title&gt;Login Page&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;Login&lt;\/h1&gt;\n    &lt;form th:action=\"@{\/login}\" method=\"post\"&gt;\n        &lt;div&gt;\n            &lt;label&gt;Username:&lt;\/label&gt;\n            &lt;input type=\"text\" name=\"username\" required \/&gt;\n        &lt;\/div&gt;\n        &lt;div&gt;\n            &lt;label&gt;Password:&lt;\/label&gt;\n            &lt;input type=\"password\" name=\"password\" required \/&gt;\n        &lt;\/div&gt;\n        &lt;button type=\"submit\"&gt;Login&lt;\/button&gt;\n    &lt;\/form&gt;\n    &lt;a th:href=\"@{\/register}\"&gt;Go to registration&lt;\/a&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/code><\/pre>\n<h3>5.2 Registration Page<\/h3>\n<pre><code>\n&lt;!DOCTYPE html&gt;\n&lt;html xmlns:th=\"http:\/\/www.thymeleaf.org\"&gt;\n&lt;head&gt;\n    &lt;title&gt;Registration Page&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;Register&lt;\/h1&gt;\n    &lt;form th:action=\"@{\/register}\" method=\"post\"&gt;\n        &lt;div&gt;\n            &lt;label&gt;Username:&lt;\/label&gt;\n            &lt;input type=\"text\" name=\"username\" required \/&gt;\n        &lt;\/div&gt;\n        &lt;div&gt;\n            &lt;label&gt;Password:&lt;\/label&gt;\n            &lt;input type=\"password\" name=\"password\" required \/&gt;\n        &lt;\/div&gt;\n        &lt;button type=\"submit\"&gt;Register&lt;\/button&gt;\n    &lt;\/form&gt;\n    &lt;a th:href=\"@{\/login}\"&gt;Go to login&lt;\/a&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/code><\/pre>\n<h2>6. Conclusion<\/h2>\n<p>In this post, we learned how to develop a backend application using Spring Boot and how to implement login and registration features through Spring Security. We gained an understanding of the basic usage of Spring Boot and its security features through a simple example. I hope this practical exercise leads to effective learning.<\/p>\n<p>As you proceed with future projects, try implementing more complex features and learning advanced technologies. I wish you to become a developer who continuously learns and grows. Thank you!<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello! In this blog post, we will learn how to develop a backend application using Spring Boot, implement login and logout functionalities with Spring Security, and add a user registration feature. We will also cover how to create repositories for interacting with the database. This course is suitable for everyone from beginners to intermediate learners. &hellip; <a href=\"https:\/\/atmokpo.com\/w\/33193\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Creating a Repository&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[131],"tags":[],"class_list":["post-33193","post","type-post","status-publish","format-standard","hentry","category-spring-boot-backend-development"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Creating a Repository - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/atmokpo.com\/w\/33193\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Creating a Repository - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Hello! In this blog post, we will learn how to develop a backend application using Spring Boot, implement login and logout functionalities with Spring Security, and add a user registration feature. We will also cover how to create repositories for interacting with the database. This course is suitable for everyone from beginners to intermediate learners. &hellip; \ub354 \ubcf4\uae30 &quot;Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Creating a Repository&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/33193\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:14:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:28:31+00:00\" \/>\n<meta name=\"author\" content=\"root\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:site\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:label1\" content=\"\uae00\uc4f4\uc774\" \/>\n\t<meta name=\"twitter:data1\" content=\"root\" \/>\n\t<meta name=\"twitter:label2\" content=\"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04\" \/>\n\t<meta name=\"twitter:data2\" content=\"5\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/33193\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33193\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Creating a Repository\",\"datePublished\":\"2024-11-01T09:14:27+00:00\",\"dateModified\":\"2024-11-01T11:28:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33193\/\"},\"wordCount\":511,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Spring Boot backend development\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/33193\/\",\"url\":\"https:\/\/atmokpo.com\/w\/33193\/\",\"name\":\"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Creating a Repository - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:14:27+00:00\",\"dateModified\":\"2024-11-01T11:28:31+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33193\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/33193\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/33193\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Creating a Repository\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/atmokpo.com\/w\/#website\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/atmokpo.com\/w\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"contentUrl\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"width\":400,\"height\":400,\"caption\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\"},\"image\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/bebubo4\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\",\"name\":\"root\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"caption\":\"root\"},\"sameAs\":[\"http:\/\/atmokpo.com\/w\"],\"url\":\"https:\/\/atmokpo.com\/w\/author\/root\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Creating a Repository - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/atmokpo.com\/w\/33193\/","og_locale":"ko_KR","og_type":"article","og_title":"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Creating a Repository - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Hello! In this blog post, we will learn how to develop a backend application using Spring Boot, implement login and logout functionalities with Spring Security, and add a user registration feature. We will also cover how to create repositories for interacting with the database. This course is suitable for everyone from beginners to intermediate learners. &hellip; \ub354 \ubcf4\uae30 \"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Creating a Repository\"","og_url":"https:\/\/atmokpo.com\/w\/33193\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:14:27+00:00","article_modified_time":"2024-11-01T11:28:31+00:00","author":"root","twitter_card":"summary_large_image","twitter_creator":"@bebubo4","twitter_site":"@bebubo4","twitter_misc":{"\uae00\uc4f4\uc774":"root","\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04":"5\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/33193\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/33193\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Creating a Repository","datePublished":"2024-11-01T09:14:27+00:00","dateModified":"2024-11-01T11:28:31+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/33193\/"},"wordCount":511,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Spring Boot backend development"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/33193\/","url":"https:\/\/atmokpo.com\/w\/33193\/","name":"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Creating a Repository - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:14:27+00:00","dateModified":"2024-11-01T11:28:31+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/33193\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/33193\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/33193\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Creating a Repository"}]},{"@type":"WebSite","@id":"https:\/\/atmokpo.com\/w\/#website","url":"https:\/\/atmokpo.com\/w\/","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","description":"","publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/atmokpo.com\/w\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/atmokpo.com\/w\/#organization","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","url":"https:\/\/atmokpo.com\/w\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/","url":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","contentUrl":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","width":400,"height":400,"caption":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8"},"image":{"@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/bebubo4"]},{"@type":"Person","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7","name":"root","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","caption":"root"},"sameAs":["http:\/\/atmokpo.com\/w"],"url":"https:\/\/atmokpo.com\/w\/author\/root\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33193","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/comments?post=33193"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33193\/revisions"}],"predecessor-version":[{"id":33194,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33193\/revisions\/33194"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=33193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=33193"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=33193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}