{"id":33195,"date":"2024-11-01T09:14:27","date_gmt":"2024-11-01T09:14:27","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=33195"},"modified":"2024-11-01T11:28:32","modified_gmt":"2024-11-01T11:28:32","slug":"spring-boot-backend-development-course-implementing-login-and-logout-with-spring-security-user-registration-creating-views","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/33195\/","title":{"rendered":"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Creating Views"},"content":{"rendered":"<p><body><\/p>\n<p>In this course, we will learn how to develop backend applications using Spring Boot. Specifically, we will implement login\/logout functionality and a registration system utilizing Spring Security, as well as cover the necessary content for creating views. Through this course, you will gain an understanding of the basic structure of web applications and their security aspects.<\/p>\n<h2>1. Introduction to Spring Boot<\/h2>\n<p>Spring Boot is a Java-based framework that provides tools for developing Spring applications quickly and simply. It simplifies the complex configurations often encountered in traditional Spring development, allowing developers to focus on business logic.<\/p>\n<h3>1.1 Advantages of Spring Boot<\/h3>\n<ul>\n<li>Auto-configuration: Spring Boot automatically configures the necessary settings when running the application.<\/li>\n<li>Standalone: Spring Boot applications can run independently, including an embedded Tomcat server.<\/li>\n<li>Convenient dependency management: Library dependencies can be easily managed via Maven or Gradle.<\/li>\n<\/ul>\n<h2>2. Setting Up Security with Spring Security<\/h2>\n<p>Spring Security provides robust authentication and authorization features for securing Spring-based applications. In this section, we will learn how to configure Spring Security and implement login and logout functionality.<\/p>\n<h3>2.1 Adding Dependencies<\/h3>\n<p>To use Spring Security, add the following dependencies to the <code>build.gradle<\/code> file:<\/p>\n<pre>\ndependencies {\n    implementation 'org.springframework.boot:spring-boot-starter-security'\n    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'\n    implementation 'org.springframework.boot:spring-boot-starter-web'\n    runtimeOnly 'com.h2database:h2'\n}\n<\/pre>\n<h3>2.2 Creating the Spring Security Configuration Class<\/h3>\n<p>We will create a <code>SecurityConfig<\/code> class for Spring Security configuration. The code below includes basic login and logout settings:<\/p>\n<pre>\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        auth.inMemoryAuthentication()\n            .withUser(\"user\").password(passwordEncoder().encode(\"password\")).roles(\"USER\")\n            .and()\n            .withUser(\"admin\").password(passwordEncoder().encode(\"admin\")).roles(\"ADMIN\");\n    }\n\n    @Override\n    protected void configure(HttpSecurity http) throws Exception {\n        http\n            .authorizeRequests()\n                .antMatchers(\"\/\", \"\/register\").permitAll()\n                .anyRequest().authenticated()\n                .and()\n            .formLogin()\n                .loginPage(\"\/login\")\n                .permitAll()\n                .and()\n            .logout()\n                .permitAll();\n    }\n\n    @Bean\n    public PasswordEncoder passwordEncoder() {\n        return new BCryptPasswordEncoder();\n    }\n}\n<\/pre>\n<h2>3. Implementing Registration Functionality<\/h2>\n<p>To implement the registration functionality, we will create an entity to store user information and a repository for database integration. After that, we will create a controller to handle the registration process.<\/p>\n<h3>3.1 Creating the User Entity<\/h3>\n<p>We will write a <code>User<\/code> class to store user information:<\/p>\n<pre>\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\n    private String username;\n    private String password;\n    private String email;\n\n    \/\/ getters and setters\n}\n<\/pre>\n<h3>3.2 Creating the UserRepository<\/h3>\n<p>We will create a repository to manage User information using JPA:<\/p>\n<pre>\nimport org.springframework.data.jpa.repository.JpaRepository;\n\npublic interface UserRepository extends JpaRepository<User, Long> {\n    User findByUsername(String username);\n}\n<\/pre>\n<h3>3.3 Creating Registration Form and Controller<\/h3>\n<p>We will create an HTML form for registration and a controller to handle it. We will create a <code>RegisterController<\/code> to process registration requests:<\/p>\n<pre>\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.RequestMapping;\n\n@Controller\n@RequestMapping(\"\/register\")\npublic class RegisterController {\n\n    @Autowired\n    private UserRepository userRepository;\n\n    @GetMapping\n    public String showRegisterForm(Model model) {\n        model.addAttribute(\"user\", new User());\n        return \"register\";\n    }\n\n    @PostMapping\n    public String registerUser(User user) {\n        user.setPassword(new BCryptPasswordEncoder().encode(user.getPassword()));\n        userRepository.save(user);\n        return \"redirect:\/login\";\n    }\n}\n<\/pre>\n<h3>3.4 Creating Registration HTML Form<\/h3>\n<p>We will create a form for registration:<\/p>\n<pre>\n<!DOCTYPE html>\n\n<html>\n<head>\n    <title>Registration<\/title>\n<\/head>\n<body>\n    <h1>Registration<\/h1>\n    <form action=\"\/register\" method=\"post\">\n        <label for=\"username\">Username:<\/label>\n        <input name=\"username\" required=\"\" type=\"text\"\/>\n        <br\/>\n        <label for=\"password\">Password:<\/label>\n        <input name=\"password\" required=\"\" type=\"password\"\/>\n        <br\/>\n        <label for=\"email\">Email:<\/label>\n        <input name=\"email\" required=\"\" type=\"email\"\/>\n        <br\/>\n        <button type=\"submit\">Register<\/button>\n    <\/form>\n<\/body>\n<\/html>\n<\/pre>\n<h2>4. Implementing Login\/Logout Functionality<\/h2>\n<p>We will implement the login and logout functionality to allow users to securely access the system.<\/p>\n<h3>4.1 Creating Login HTML Form<\/h3>\n<p>We will create the login form:<\/p>\n<pre>\n<!DOCTYPE html>\n\n<html>\n<head>\n    <title>Login<\/title>\n<\/head>\n<body>\n    <h1>Login<\/h1>\n    <form action=\"\/login\" method=\"post\">\n        <label for=\"username\">Username:<\/label>\n        <input name=\"username\" required=\"\" type=\"text\"\/>\n        <br\/>\n        <label for=\"password\">Password:<\/label>\n        <input name=\"password\" required=\"\" type=\"password\"\/>\n        <br\/>\n        <button type=\"submit\">Login<\/button>\n    <\/form>\n<\/body>\n<\/html>\n<\/pre>\n<h3>4.2 Handling Logout<\/h3>\n<p>The logout functionality is provided by Spring Security by default, specifying a logout URL through which logout is processed. It uses the default <code>\/logout<\/code> path.<\/p>\n<h2>5. Creating Views<\/h2>\n<p>Now that we have implemented the registration and login functionality, we will create the views that will be displayed to the users. When using Spring Boot, we mainly use a template engine called Thymeleaf.<\/p>\n<h3>5.1 Setting Up Thymeleaf<\/h3>\n<p>To use Thymeleaf, add the following dependency to the <code>build.gradle<\/code> file:<\/p>\n<pre>\ndependencies {\n    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'\n}\n<\/pre>\n<h3>5.2 Creating a Basic Home Page<\/h3>\n<p>We will create a controller and view to display the home page. Below is the HTML code representing the home page:<\/p>\n<pre>\n<!DOCTYPE html>\n\n<html xmlns:th=\"http:\/\/www.thymeleaf.org\">\n<head>\n    <title>Home<\/title>\n<\/head>\n<body>\n    <h1>Home Page<\/h1>\n    <p th:if=\"${#authentication.principal != null}\">\n        Hello, <span th:text=\"${#authentication.principal.username}\">User<\/span>!\n        <a href=\"\/logout\">Logout<\/a>\n    <\/p>\n    <p th:if=\"${#authentication.principal == null}\">\n        <a href=\"\/login\">Login<\/a>\n        <br\/>\n        <a href=\"\/register\">Register<\/a>\n    <\/p>\n<\/body>\n<\/html>\n<\/pre>\n<h2>6. Conclusion<\/h2>\n<p>In this way, we have built a web application with simple registration and login\/logout functionality using Spring Boot. Through this project, you will understand the basic usage of Spring Boot and implementing security features using Spring Security.<\/p>\n<h3>6.1 Next Steps<\/h3>\n<p>You can now consider adding more complex features or developing a RESTful API to communicate with the frontend. It is also good to think about integration with mobile applications or other clients. If necessary, integrating external authentication services like OAuth2 is also a good direction.<\/p>\n<h3>6.2 Additional Resources<\/h3>\n<p>If you want more information, please refer to the official Spring Boot documentation and Spring Security documentation:<\/p>\n<ul>\n<li><a href=\"https:\/\/spring.io\/projects\/spring-boot\" target=\"_blank\" rel=\"noopener\">Spring Boot Project<\/a><\/li>\n<li><a href=\"https:\/\/spring.io\/projects\/spring-security\" target=\"_blank\" rel=\"noopener\">Spring Security Project<\/a><\/li>\n<\/ul>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this course, we will learn how to develop backend applications using Spring Boot. Specifically, we will implement login\/logout functionality and a registration system utilizing Spring Security, as well as cover the necessary content for creating views. Through this course, you will gain an understanding of the basic structure of web applications and their security &hellip; <a href=\"https:\/\/atmokpo.com\/w\/33195\/\" 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 Views&#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-33195","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 Views - \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\/33195\/\" \/>\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 Views - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"In this course, we will learn how to develop backend applications using Spring Boot. Specifically, we will implement login\/logout functionality and a registration system utilizing Spring Security, as well as cover the necessary content for creating views. Through this course, you will gain an understanding of the basic structure of web applications and their security &hellip; \ub354 \ubcf4\uae30 &quot;Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Creating Views&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/33195\/\" \/>\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:32+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=\"4\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/33195\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33195\/\"},\"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 Views\",\"datePublished\":\"2024-11-01T09:14:27+00:00\",\"dateModified\":\"2024-11-01T11:28:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33195\/\"},\"wordCount\":566,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Spring Boot backend development\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/33195\/\",\"url\":\"https:\/\/atmokpo.com\/w\/33195\/\",\"name\":\"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Creating Views - \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:32+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33195\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/33195\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/33195\/#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 Views\"}]},{\"@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 Views - \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\/33195\/","og_locale":"ko_KR","og_type":"article","og_title":"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Creating Views - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"In this course, we will learn how to develop backend applications using Spring Boot. Specifically, we will implement login\/logout functionality and a registration system utilizing Spring Security, as well as cover the necessary content for creating views. Through this course, you will gain an understanding of the basic structure of web applications and their security &hellip; \ub354 \ubcf4\uae30 \"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Creating Views\"","og_url":"https:\/\/atmokpo.com\/w\/33195\/","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:32+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":"4\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/33195\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/33195\/"},"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 Views","datePublished":"2024-11-01T09:14:27+00:00","dateModified":"2024-11-01T11:28:32+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/33195\/"},"wordCount":566,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Spring Boot backend development"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/33195\/","url":"https:\/\/atmokpo.com\/w\/33195\/","name":"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, User Registration, Creating Views - \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:32+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/33195\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/33195\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/33195\/#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 Views"}]},{"@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\/33195","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=33195"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33195\/revisions"}],"predecessor-version":[{"id":33196,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33195\/revisions\/33196"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=33195"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=33195"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=33195"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}