{"id":33187,"date":"2024-11-01T09:14:24","date_gmt":"2024-11-01T09:14:24","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=33187"},"modified":"2024-11-01T11:28:34","modified_gmt":"2024-11-01T11:28:34","slug":"spring-boot-backend-development-course-implementing-login-and-logout-with-spring-security-user-registration-adding-logout-view","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/33187\/","title":{"rendered":"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Adding Logout View"},"content":{"rendered":"<p><body><\/p>\n<p>\n    In this lecture, we will mainly cover how to implement login\/logout functionality and user registration using Spring Security while developing the backend with Spring Boot. We will also explain how to add a logout view in detail. This course will start from a basic Spring Boot project and progressively add the necessary features.\n<\/p>\n<h2>1. Spring Boot Project Setup<\/h2>\n<p>\n    Spring Boot is a framework that helps you quickly develop web applications based on Java. In this course, we will set up the project using the latest version of Spring Boot. Here are the steps to set up a Spring Boot project.\n<\/p>\n<pre><code>1. Generate a basic project using Spring Initializr\n   - Go to https:\/\/start.spring.io\/.\n   - Project: Maven Project\n   - Language: Java\n   - Spring Boot: Select the latest version\n   - Set Project Metadata:\n     - Group: com.example\n     - Artifact: demo\n   - Add Dependencies:\n     - Spring Web\n     - Spring Security\n     - Spring Data JPA\n     - H2 Database (Embedded Database)\n   - Click the Generate button to download the ZIP file and extract it\n<\/code><\/pre>\n<h3>1.1. Open the Project in IDE<\/h3>\n<p>\n    Open the downloaded project in your IDE. You can use IDEs like IntelliJ IDEA or Eclipse. Each IDE will automatically download the dependency libraries via Maven.\n<\/p>\n<h2>2. Design Domain Model<\/h2>\n<p>\n    Design the domain model to store user information for registration and login. Create a class called <code>User<\/code> and map it to the database using JPA.\n<\/p>\n<pre><code>package com.example.demo.model;\n\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    private String email;\n\n    \/\/ Getter and Setter\n}\n<\/code><\/pre>\n<h3>2.1. Create User Repository<\/h3>\n<p>\n    Create a <code>UserRepository<\/code> interface to manipulate user data. Extend JPA&#8217;s <code>CrudRepository<\/code> to provide basic CRUD functionality.\n<\/p>\n<pre><code>package com.example.demo.repository;\n\nimport com.example.demo.model.User;\nimport org.springframework.data.repository.CrudRepository;\n\npublic interface UserRepository extends CrudRepository<User, Long> {\n    User findByUsername(String username);\n}\n<\/code><\/pre>\n<h2>3. Configure Spring Security<\/h2>\n<p>\n    Configure Spring Security to implement login and registration features. Spring Security is a powerful framework that enhances the security performance of applications.\n<\/p>\n<h3>3.1. Security Configuration Class<\/h3>\n<p>\n    Create a class for Spring Security configuration. Write the <code>SecurityConfig<\/code> class to set up basic authentication and authorization settings.\n<\/p>\n<pre><code>package com.example.demo.config;\n\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;\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;\nimport org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;\nimport org.springframework.security.crypto.password.PasswordEncoder;\n\n@Configuration\n@EnableWebSecurity\npublic class SecurityConfig extends WebSecurityConfigurerAdapter {\n    \n    @Override\n    protected void configure(AuthenticationManagerBuilder auth) throws Exception {\n        \/\/ UserDetailsService and PasswordEncoder configuration\n    }\n\n    @Override\n    protected void configure(HttpSecurity http) throws Exception {\n        http\n            .authorizeRequests()\n                .antMatchers(\"\/register\").permitAll() \/\/ Allow everyone to access the registration page\n                .anyRequest().authenticated() \/\/ Require authentication for other requests\n                .and()\n            .formLogin()\n                .loginPage(\"\/login\") \/\/ Custom login page\n                .permitAll()\n                .and()\n            .logout()\n                .permitAll(); \/\/ Allow logout\n    }\n\n    @Bean\n    public PasswordEncoder passwordEncoder() {\n        return new BCryptPasswordEncoder();\n    }\n}\n<\/code><\/pre>\n<h2>4. Implement Registration Functionality<\/h2>\n<p>\n    Implement a REST Controller and registration view for the registration feature. Create a <code>User<\/code> object using the information inputted by the user, and store the password securely hashed.\n<\/p>\n<h3>4.1. Create User Controller Class<\/h3>\n<pre><code>package com.example.demo.controller;\n\nimport com.example.demo.model.User;\nimport com.example.demo.repository.UserRepository;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.security.crypto.password.PasswordEncoder;\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.RequestMapping;\n\n@Controller\n@RequestMapping(\"\/register\")\npublic class UserController {\n    \n    @Autowired\n    private UserRepository userRepository;\n    \n    @Autowired\n    private PasswordEncoder passwordEncoder;\n\n    @GetMapping\n    public String showRegistrationForm(Model model) {\n        model.addAttribute(\"user\", new User());\n        return \"register\";\n    }\n\n    @PostMapping\n    public String registerUser(User user) {\n        user.setPassword(passwordEncoder.encode(user.getPassword())); \/\/ Hash the password\n        userRepository.save(user); \/\/ Save the user\n        return \"redirect:\/login\"; \/\/ Redirect to the login page after registration\n    }\n}\n<\/code><\/pre>\n<h3>4.2. Registration View<\/h3>\n<p>\n    Create a Thymeleaf view for registration. This will exist as an HTML file and provide a form for the user to input and submit their information.\n<\/p>\n<pre><code>&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;title&gt;Registration&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;Registration&lt;\/h1&gt;\n    &lt;form action=\"\/register\" method=\"post\"&gt;\n        &lt;label for=\"username\"&gt;Username&lt;\/label&gt;\n        &lt;input type=\"text\" id=\"username\" name=\"username\" required&gt;\n        &lt;label for=\"password\"&gt;Password&lt;\/label&gt;\n        &lt;input type=\"password\" id=\"password\" name=\"password\" required&gt;\n        &lt;label for=\"email\"&gt;Email&lt;\/label&gt;\n        &lt;input type=\"email\" id=\"email\" name=\"email\" required&gt;\n        &lt;button type=\"submit\"&gt;Register&lt;\/button&gt;\n    &lt;\/form&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/code><\/pre>\n<h2>5. Implement Login Functionality<\/h2>\n<p>\n    Set up additional controllers and views for login functionality. Authentication will be based on the information inputted by the user during login.\n<\/p>\n<h3>5.1. Login Page Setup<\/h3>\n<p>\n    Create an HTML file for the login page. It should include fields for entering the username and password.\n<\/p>\n<pre><code>&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;title&gt;Login&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;Login&lt;\/h1&gt;\n    &lt;form action=\"\/login\" method=\"post\"&gt;\n        &lt;label for=\"username\"&gt;Username&lt;\/label&gt;\n        &lt;input type=\"text\" id=\"username\" name=\"username\" required&gt;\n        &lt;label for=\"password\"&gt;Password&lt;\/label&gt;\n        &lt;input type=\"password\" id=\"password\" name=\"password\" required&gt;\n        &lt;button type=\"submit\"&gt;Login&lt;\/button&gt;\n    &lt;\/form&gt;\n    &lt;a href=\"\/register\"&gt;Go to registration&lt;\/a&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/code><\/pre>\n<h2>6. Implement Logout and Add View<\/h2>\n<p>\n    Add logout functionality. Set it up so that users are redirected to the main screen after logging out.\n<\/p>\n<h3>6.1. Configure Logout Functionality<\/h3>\n<p>\n    The logout functionality can be easily implemented through the already configured <code>HttpSecurity<\/code>. When a user requests to log out, the authentication session is invalidated and redirected.\n<\/p>\n<h3>6.2. Create Redirect Page After Logout<\/h3>\n<p>\n    Create a page that users will see after logging out. Here, appropriate messages can be provided.\n<\/p>\n<pre><code>&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;title&gt;Logout&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;You have logged out.&lt;\/h1&gt;\n    &lt;p&gt;Click the button below to log in again.&lt;\/p&gt;\n    &lt;a href=\"\/login\"&gt;Go to login page&lt;\/a&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/code><\/pre>\n<h2>7. Conclusion and Next Steps<\/h2>\n<p>\n    In this lecture, we have implemented login and logout functionalities, and user registration using Spring Security while developing the backend with Spring Boot. After mastering these basic functions, it is also possible to implement more extended functionalities such as JWT (JSON Web Token) based authentication, social login using OAuth2, and password reset functionalities.\n<\/p>\n<p>\n    Additionally, based on this course, I encourage you to learn advanced topics such as communication with web front-end through RESTful APIs, cloud deployment, and test and deployment automation.\n<\/p>\n<p>\n    I hope this helps you in your development journey, and if you have any questions or further inquiries, please leave a comment. Thank you!\n<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this lecture, we will mainly cover how to implement login\/logout functionality and user registration using Spring Security while developing the backend with Spring Boot. We will also explain how to add a logout view in detail. This course will start from a basic Spring Boot project and progressively add the necessary features. 1. Spring &hellip; <a href=\"https:\/\/atmokpo.com\/w\/33187\/\" 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, Adding Logout View&#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-33187","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, Adding Logout View - \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\/33187\/\" \/>\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, Adding Logout View - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"In this lecture, we will mainly cover how to implement login\/logout functionality and user registration using Spring Security while developing the backend with Spring Boot. We will also explain how to add a logout view in detail. This course will start from a basic Spring Boot project and progressively add the necessary features. 1. Spring &hellip; \ub354 \ubcf4\uae30 &quot;Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Adding Logout View&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/33187\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:14:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:28:34+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=\"6\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/33187\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33187\/\"},\"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, Adding Logout View\",\"datePublished\":\"2024-11-01T09:14:24+00:00\",\"dateModified\":\"2024-11-01T11:28:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33187\/\"},\"wordCount\":528,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Spring Boot backend development\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/33187\/\",\"url\":\"https:\/\/atmokpo.com\/w\/33187\/\",\"name\":\"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Adding Logout View - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:14:24+00:00\",\"dateModified\":\"2024-11-01T11:28:34+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33187\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/33187\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/33187\/#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, Adding Logout View\"}]},{\"@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, Adding Logout View - \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\/33187\/","og_locale":"ko_KR","og_type":"article","og_title":"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Adding Logout View - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"In this lecture, we will mainly cover how to implement login\/logout functionality and user registration using Spring Security while developing the backend with Spring Boot. We will also explain how to add a logout view in detail. This course will start from a basic Spring Boot project and progressively add the necessary features. 1. Spring &hellip; \ub354 \ubcf4\uae30 \"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Adding Logout View\"","og_url":"https:\/\/atmokpo.com\/w\/33187\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:14:24+00:00","article_modified_time":"2024-11-01T11:28:34+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":"6\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/33187\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/33187\/"},"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, Adding Logout View","datePublished":"2024-11-01T09:14:24+00:00","dateModified":"2024-11-01T11:28:34+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/33187\/"},"wordCount":528,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Spring Boot backend development"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/33187\/","url":"https:\/\/atmokpo.com\/w\/33187\/","name":"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Adding Logout View - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:14:24+00:00","dateModified":"2024-11-01T11:28:34+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/33187\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/33187\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/33187\/#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, Adding Logout View"}]},{"@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\/33187","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=33187"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33187\/revisions"}],"predecessor-version":[{"id":33188,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33187\/revisions\/33188"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=33187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=33187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=33187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}