{"id":9294,"date":"2019-02-21T03:15:04","date_gmt":"2019-02-20T18:15:04","guid":{"rendered":"http:\/\/www.webcyou.com\/?p=9294"},"modified":"2019-02-21T03:16:08","modified_gmt":"2019-02-20T18:16:08","slug":"nuxt-js-%e3%81%a8-auth-module-%ef%bc%88nuxtjs-auth%ef%bc%89%e3%81%a7%e3%80%81jwt%ef%bc%88json-web-tokens%ef%bc%89-oauth-%e8%aa%8d%e8%a8%bc-%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3","status":"publish","type":"post","link":"https:\/\/www.webcyou.com\/?p=9294","title":{"rendered":"Nuxt.js \u3068 auth-module \uff08@nuxtjs\/auth\uff09\u3067\u3001JWT\uff08JSON Web Tokens\uff09&#038;  OAuth \u8a8d\u8a3c \u30ed\u30b0\u30a4\u30f3"},"content":{"rendered":"<p>\u3069\u3082\u3067\u3059\u3002<\/p>\n<p>\u3044\u3084\u3041\u3002Nuxt js\u6271\u3063\u3066\u3044\u307e\u3059\u304b\uff1f<\/p>\n<p>\u79c1\u306f\u3082\u3063\u3071\u3089 Adobe\u306eExtend Script\u6f2c\u3051\u306e\u65e5\u3005\u3067\u3059\u3002<\/p>\n<p>\u307e\u3041\u3001\u305d\u308c\u306f\u826f\u3044\u3068\u3057\u3066\u3001\u4eca\u56de\u306fNuxt.js\u3067\u3001\u300c<strong>JWT\uff08JSON Web Tokens\uff09&amp; OAuth \u8a8d\u8a3c \u30ed\u30b0\u30a4\u30f3<\/strong>\u300d\u3092\u30e9\u30af\u30e9\u30af\u306b\u5b9f\u88c5\u3067\u304d\u308b\u300cauth-module \uff08@nuxtjs\/auth\uff09\u300d\u306b\u3064\u3044\u3066\u3067\u3059\u3002<\/p>\n<h4>auth-module \uff08@nuxtjs\/auth\uff09\u3068\u306f\uff1f<\/h4>\n<p><strong>auth-module<\/strong>\u3068\u306f\u306a\u3093\u305e\u3084\uff1f<\/p>\n<p>\u3063\u3066\u3068\u3053\u308d\u3067\u3059\u304c\u3001auth-module\u306fNuxt-Community \u304c\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3057\u3066\u3001<strong>JWT\uff08JSON Web Tokens\uff09<\/strong>\u306e\u8a8d\u8a3c\u3084 <strong>OAuth \u8a8d\u8a3c<\/strong> \u30ed\u30b0\u30a4\u30f3\u306a\u3069\u304c\u3001\u7169\u96d1\u306a\u8a2d\u5b9a\u3084\u30b3\u30fc\u30c9\u3092\u8a18\u8ff0\u305b\u305a\u306b\u7c21\u5358\u306b\u7d44\u307f\u8fbc\u3080\u3053\u3068\u304c\u3067\u304d\u308b\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u306a\u3063\u3066\u304a\u308a\u307e\u3059\u3002<\/p>\n<p>SPA\u3067\u306e\u8a8d\u8a3c\u8a8d\u53ef\uff08\u4e3b\u306b\u8a8d\u53ef\u30c8\u30fc\u30af\u30f3\uff09\u306f\u3001<a href=\"https:\/\/jwt.io\/\" target=\"_blank\" rel=\"noopener\">JWT<\/a>\u3067\u5b9f\u88c5\u3092\u691c\u8a0e\u3055\u308c\u3066\u3044\u308b\u65b9\u3082\u591a\u3044\u306e\u3067\u306f\u3068\u3002<\/p>\n<p>\u4e00\u304b\u3089JWT\u3084OAuth \u8a8d\u8a3c\u306a\u3069\u3092\u5b9f\u88c5\u3059\u308b\u3068\u306a\u308b\u3068\u3001\u3061\u3087\u3063\u3068\u9762\u5012\u3067\u3059\u304c\u3001\u3053\u3061\u3089\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u5229\u7528\u3059\u308c\u3070\u30e9\u30af\u30e9\u30af\u306b\u5b9f\u88c5\u304c\u53ef\u80fd\u3068\u306a\u3063\u3066\u304a\u308a\u307e\u3059\u3002<\/p>\n<p><strong>GitHub<\/strong><\/p>\n<p><a href=\"https:\/\/github.com\/nuxt-community\/auth-module\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/nuxt-community\/auth-module<\/a><\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9355\" src=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/1b5efb0321a715dc970270475c6ab69a.png\" alt=\"\" width=\"527\" height=\"230\" srcset=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/1b5efb0321a715dc970270475c6ab69a.png 527w, https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/1b5efb0321a715dc970270475c6ab69a-300x131.png 300w\" sizes=\"auto, (max-width: 527px) 100vw, 527px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>\u30bd\u30fc\u30b7\u30e3\u30eb\u30ed\u30b0\u30a4\u30f3\u306f\u3001\u73fe\u6642\u70b9\u3067 <strong>Facebook, GitHub, Google, Auth0<\/strong>\u306a\u3069\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u3066\u3001\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u3084\u6700\u4f4e\u9650\u306e\u30b9\u30b3\u30fc\u30d7\u304c\u30e9\u30a4\u30d6\u30e9\u30ea\u5185\u3067\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u305d\u308c\u3089\u306f\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8ID\/Secret\u306a\u3069\u3092\u8a2d\u5b9a\u3059\u308b\u3060\u3051\u3067\u7c21\u5358\u306b\u5b9f\u88c5\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u8d85\u7d76\u4fbf\u5229\u3002<\/p>\n<p>\u305d\u308c\u3067\u306f\u3001\u65e9\u901f\u4f7f\u7528\u3057\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n<h4>auth-module\u3092\u4f7f\u3063\u3066\u307f\u308b\u3002<\/h4>\n<p>auth-module\u306f\u3001\u4e88\u3081 example\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u306e\u3067\u3001GitHub\u304b\u3089\u30af\u30ed\u30fc\u30f3\u3057\u3066example\u3092\u52d5\u304b\u3057\u3066\u898b\u3066\u307f\u3088\u3046\u304b\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p><strong>GitHub\u00a0examples<\/strong><\/p>\n<p><a href=\"https:\/\/github.com\/nuxt-community\/auth-module\/tree\/dev\/examples\/demo\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/nuxt-community\/auth-module\/tree\/dev\/examples\/demo<\/a><\/p>\n<p>\u307e\u305a\u306f\u3001Git\u30af\u30ed\u30fc\u30f3<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">$ git clone git@github.com:nuxt-community\/auth-module.git<\/pre>\n<p>\u4f5c\u6210\u3055\u308c\u305f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u79fb\u52d5\u3002<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">$ cd\u00a0auth-module\/<\/pre>\n<p>yarn\u30b3\u30de\u30f3\u30c9\u3067\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u985e\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3002<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">$ yarn install\r\n$ yarn dev<\/pre>\n<p>\u306f\u3044\u3002\u7c21\u5358\u3002<\/p>\n<p>\u3053\u308c\u3067\u300c<a href=\"http:\/\/localhost:3000\">http:\/\/localhost:3000<\/a>\u300d\u3092\u30d6\u30e9\u30a6\u30b6\u3067\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3068\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u753b\u9762\u304c\u8868\u793a\u3059\u308b\u304b\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9357\" src=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/85c4a3cc49beea53a7c2aa908650ddfc.png\" alt=\"\" width=\"840\" height=\"322\" srcset=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/85c4a3cc49beea53a7c2aa908650ddfc.png 972w, https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/85c4a3cc49beea53a7c2aa908650ddfc-300x115.png 300w, https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/85c4a3cc49beea53a7c2aa908650ddfc-768x295.png 768w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/p>\n<p>auth-module\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067Cookie\u306b\u30bb\u30c3\u30c8\u3055\u308c\u308b\u8a2d\u5b9a\u3068\u306a\u3063\u3066\u304a\u308a\u307e\u3059\u306e\u3067\u3001\u5f90\u308d\u306bCookie\u3092\u78ba\u8a8d\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9360\" src=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/faa4c03982720a93fab95a3e723e6e5b.png\" alt=\"\" width=\"266\" height=\"138\" \/><\/p>\n<p>\u3075\u3080\u3075\u3080\u3002<\/p>\n<p>\u305d\u308c\u3089\u3057\u304d\u3082\u306e\u304c\u8ffd\u52a0\u3055\u308c\u3066\u3044\u308b\u306e\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n<p>\u305d\u308c\u3067\u306f\u3001\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<p>\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u300c123\u300d\u3067\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u307e\u305f\u3001Username\u306f\u3001\u4efb\u610f\u306e\u6587\u5b57\u5217\u304c\u5165\u529b\u3055\u308c\u3066\u3044\u308c\u3070\u30aa\u30c3\u30b1\u30fc\u3067\u3059\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9362\" src=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/498a7fe20767c407e02c2b7a3f04a4f4.png\" alt=\"\" width=\"723\" height=\"333\" srcset=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/498a7fe20767c407e02c2b7a3f04a4f4.png 856w, https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/498a7fe20767c407e02c2b7a3f04a4f4-300x138.png 300w, https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/498a7fe20767c407e02c2b7a3f04a4f4-768x353.png 768w\" sizes=\"auto, (max-width: 723px) 100vw, 723px\" \/><\/p>\n<p>\u300cLogin\u300d\u30dc\u30bf\u30f3\u3092\u62bc\u4e0b\u3059\u308b\u3068\u3001\u5148\u7a0b\u5165\u529b\u3057\u305f\u30e6\u30fc\u30b6\u30fc\u540d\u304c\u8868\u793a\u3057\u3001\u30dc\u30bf\u30f3\u304c\u300cSecure\u300d\u3068\u300cLogout\u300d\u306b\u5909\u66f4\u3055\u308c\u3001<\/p>\n<p>\u30ed\u30b0\u30a4\u30f3\u3055\u308c\u305f\u72b6\u614b\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9363\" src=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/9f34378efc53477813ab22711c8904c6.png\" alt=\"\" width=\"728\" height=\"247\" srcset=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/9f34378efc53477813ab22711c8904c6.png 1097w, https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/9f34378efc53477813ab22711c8904c6-300x102.png 300w, https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/9f34378efc53477813ab22711c8904c6-768x260.png 768w, https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/9f34378efc53477813ab22711c8904c6-1024x347.png 1024w\" sizes=\"auto, (max-width: 728px) 100vw, 728px\" \/><\/p>\n<p>\u300c<strong>Secure<\/strong>\u300d\u30dc\u30bf\u30f3\u3092\u62bc\u4e0b\u3057\u3001Secure\u30da\u30fc\u30b8\u306b\u9077\u79fb\u3059\u308b\u3068\u3001State\u304c\u8868\u793a\u3055\u308c\u3001\u30e6\u30fc\u30b6\u30fc\u306e\u60c5\u5831\u306a\u3069\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9364\" src=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/002d615e736daed8201ae88380a86b5b.png\" alt=\"\" width=\"648\" height=\"406\" srcset=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/002d615e736daed8201ae88380a86b5b.png 981w, https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/002d615e736daed8201ae88380a86b5b-300x188.png 300w, https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/002d615e736daed8201ae88380a86b5b-768x481.png 768w\" sizes=\"auto, (max-width: 648px) 100vw, 648px\" \/><\/p>\n<p>\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001<strong>JWT\uff08JSON Web Tokens\uff09<\/strong>\u306f\u3001\u30af\u30c3\u30ad\u30fc\u306b\u4fdd\u5b58\u3055\u308c\u308b\u3088\u3046\u3067\u3059\u3002<\/p>\n<p>\u78ba\u8a8d\u3059\u308b\u3068\u3001\u300cauth._token.local\u300d\u3068\u300cauth._refresh_token.local\u300d\u304c\u5b58\u5728\u3059\u308b\u306e\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9365\" src=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/1ddf5eff095eeedf625a1810997bf3fc.png\" alt=\"\" width=\"441\" height=\"182\" srcset=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/1ddf5eff095eeedf625a1810997bf3fc.png 545w, https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/1ddf5eff095eeedf625a1810997bf3fc-300x124.png 300w\" sizes=\"auto, (max-width: 441px) 100vw, 441px\" \/><\/p>\n<p>\u3053\u3061\u3089\u306e\u3001<strong>JWT\uff08JSON Web Tokens\uff09<\/strong>\u306e\u5024\u3092JWT.IO\u3067\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<p><strong>JWT.IO<\/strong><\/p>\n<p><a href=\"https:\/\/jwt.io\/\" target=\"_blank\" rel=\"noopener\">https:\/\/jwt.io\/<\/a><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9370\" src=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/85c6dc8df2f148c963b5595dda299b90.png\" alt=\"\" width=\"736\" height=\"294\" srcset=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/85c6dc8df2f148c963b5595dda299b90.png 1190w, https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/85c6dc8df2f148c963b5595dda299b90-300x120.png 300w, https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/85c6dc8df2f148c963b5595dda299b90-768x307.png 768w, https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/85c6dc8df2f148c963b5595dda299b90-1024x409.png 1024w\" sizes=\"auto, (max-width: 736px) 100vw, 736px\" \/><\/p>\n<p><strong>JWT\uff08JSON Web Tokens\uff09<\/strong>\u306e\u30c7\u30b3\u30fc\u30c9\u3092\u30b5\u30a4\u30c8\u3067\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u306e\u3067\u3001\u78ba\u8a8d\u3002<\/p>\n<p>\uff08Bearer%20\u306f\u524a\u9664\uff09<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9371\" src=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/d3141dd8d801495cfcf684f8b2bbef5f.png\" alt=\"\" width=\"653\" height=\"294\" srcset=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/d3141dd8d801495cfcf684f8b2bbef5f.png 1031w, https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/d3141dd8d801495cfcf684f8b2bbef5f-300x135.png 300w, https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/d3141dd8d801495cfcf684f8b2bbef5f-768x346.png 768w, https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/d3141dd8d801495cfcf684f8b2bbef5f-1024x461.png 1024w\" sizes=\"auto, (max-width: 653px) 100vw, 653px\" \/><\/p>\n<p>\u78ba\u8a8d\u3059\u308b\u3068\u3001\u5148\u7a0b\u30da\u30fc\u30b8\u3067\u78ba\u8a8d\u3057\u305fstate\u306e\u30e6\u30fc\u30b6\u30fc\u60c5\u5831\u304c\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u3053\u308c\u3067\u3001JWT\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u60c5\u5831\u3068\u305d\u306e\u4ed6\u3001HS256\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u7528\u3044\u3089\u308c\u3066\u3044\u308b\u306e\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n<p>\u3061\u306a\u307f\u306b\u3001component\uff08JS\uff09\u5074\u3067\u3001auth-module\u306e\u30c7\u30fc\u30bf\u306f\u300cthis.$auth\u300d\u3067\u53c2\u7167\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u5148\u7a0b\u30da\u30fc\u30b8\u3067\u78ba\u8a8d\u3057\u305f\u3001state\u306e\u60c5\u5831\u306f\u4ee5\u4e0b\u3067\u53c2\u7167\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">this.$auth.$state<\/pre>\n<p>\u305d\u306e\u4ed6\u306b\u3082\u3001\u516c\u5f0f\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u8a18\u8f09\u3057\u3066\u304a\u308a\u307e\u3059\u3002<\/p>\n<p><a href=\"https:\/\/auth.nuxtjs.org\/\" target=\"_blank\" rel=\"noopener\">https:\/\/auth.nuxtjs.org\/<\/a><\/p>\n<p><strong>\u30e6\u30fc\u30b6\u30fc\u30c7\u30fc\u30bf\u53c2\u7167<\/strong><\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\/\/ Access using $auth\r\nthis.$auth.user<\/pre>\n<p><strong>vuex\u306eStore\u306b\u3088\u308b\u53c2\u7167\u00a0<\/strong><\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\/\/ Access using vuex\r\nthis.$store.state.auth.user<\/pre>\n<p>\u3068\u3001\u78ba\u8a8d\u3057\u305f\u3068\u3053\u308d\u3067\u3001\u30af\u30c3\u30ad\u30fc\u3060\u3068\u4f55\u304b\u3068\u5b9c\u3057\u304f\u306a\u3044\u306e\u3082\u3042\u308a\u307e\u3059\u306e\u3067\u3001localStorage\u306b\u5909\u66f4\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<p>\u4e00\u65e6\u300cLogout\u300d\u30dc\u30bf\u30f3\u62bc\u4e0b\u3067\u30ed\u30b0\u30a2\u30a6\u30c8\u3002<\/p>\n<p>yarn dev \u306e\u8d77\u52d5\u3092\u505c\u6b62\u3057\u307e\u3059\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9369\" src=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/dc757e0844617af0aa7560c6146ff746.png\" alt=\"\" width=\"353\" height=\"93\" srcset=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/dc757e0844617af0aa7560c6146ff746.png 429w, https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/dc757e0844617af0aa7560c6146ff746-300x79.png 300w\" sizes=\"auto, (max-width: 353px) 100vw, 353px\" \/><\/p>\n<p>\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3055\u308c\u3066\u3044\u308b\u300c<strong>cokkie: false<\/strong>\u300d\u3092\u30b3\u30e1\u30f3\u30c8\u89e3\u9664\u3057\u6709\u52b9\u306b\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">auth: { \r\n  \/\/ cookie: false, \r\n  \/\/ localStorage: false,<\/pre>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">auth: { \r\n  cookie: false, \r\n  redirect: { callback: '\/callback' },<\/pre>\n<p>\u518d\u5ea6\u3001yarn dev\u3067\u8d77\u52d5\u3002<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">$ yarn dev<\/pre>\n<p>\u30af\u30c3\u30ad\u30fc\u3092\u78ba\u8a8d\u3059\u308b\u3068\u3053\u308d\u3001\u5b58\u5728\u3057\u306a\u3044\u306e\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9372\" src=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/57e5305c38d46f86b91735c754933f6c.png\" alt=\"\" width=\"356\" height=\"145\" srcset=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/57e5305c38d46f86b91735c754933f6c.png 398w, https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/57e5305c38d46f86b91735c754933f6c-300x122.png 300w\" sizes=\"auto, (max-width: 356px) 100vw, 356px\" \/><\/p>\n<p>Chrome\u306e\u30a4\u30f3\u30b9\u30da\u30af\u30bf \uff1e Application \u3067\u3001LocalStorage\u304c\u78ba\u8a8d\u3067\u304d\u308b\u306e\u3067\u3001\u898b\u3066\u307f\u308b\u3068\u3002<\/p>\n<p>\u8af8\u3005\u3001\u8ffd\u52a0\u3055\u308c\u3066\u3044\u308b\u306e\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9373\" src=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/e529b5a2d892ed2f83e88cf03148be35.png\" alt=\"\" width=\"376\" height=\"213\" srcset=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/e529b5a2d892ed2f83e88cf03148be35.png 376w, https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/e529b5a2d892ed2f83e88cf03148be35-300x170.png 300w\" sizes=\"auto, (max-width: 376px) 100vw, 376px\" \/><\/p>\n<p>\u3068\u3053\u308d\u304c\u3001\u4f55\u304b\u30a8\u30e9\u30fc\u304c\u51fa\u3066\u3044\u308b\u3002\u3002<\/p>\n<p>\u306a\u3093\u3060\u308d\u3046\u3002\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9379\" src=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/ce86685f07c14af83f2437ea862b25d7.png\" alt=\"\" width=\"437\" height=\"203\" srcset=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/ce86685f07c14af83f2437ea862b25d7.png 508w, https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/ce86685f07c14af83f2437ea862b25d7-300x139.png 300w\" sizes=\"auto, (max-width: 437px) 100vw, 437px\" \/><\/p>\n<p>\u3068\u3044\u3046\u3068\u3053\u308d\u3001\u30a8\u30e9\u30fc\u3092\u78ba\u8a8d\u3059\u308b\u3068\u3001\u3069\u3046\u3084\u3089SPA\u3067\u8d77\u52d5\u3057\u3066\u3044\u306a\u304fSSR\u3067\u306e\u8d77\u52d5\u3092\u884c\u3063\u3066\u3044\u305f\u3088\u3046\u306a\u306e\u3067\u3001\u300cmode: &#8216;spa&#8217;\u300d\u3092\u3001nuxt.config.js\u306b\u8ffd\u8a18\u3002<\/p>\n<p><a href=\"https:\/\/github.com\/nuxt-community\/auth-module\/blob\/dev\/examples\/demo\/nuxt.config.js\" target=\"_blank\" rel=\"noopener\">nuxt.config.js<\/a><\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">mode: 'spa',<\/pre>\n<p><strong>GitHub nuxt.config.js<\/strong><\/p>\n<p><a href=\"https:\/\/github.com\/nuxt-community\/auth-module\/blob\/dev\/examples\/demo\/nuxt.config.js\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/nuxt-community\/auth-module\/blob\/dev\/examples\/demo\/nuxt.config.js<\/a><\/p>\n<p><strong>nuxt.config.js<\/strong>\u3092\u78ba\u8a8d\u3059\u308b\u3068\u3001<strong>serverMiddleware<\/strong>\u306e\u6307\u5b9a\u3067\u3001<span class=\"pl-s\">..\/api\/auth.js \u3092\u6307\u5b9a\u3057\u3066\u3044\u308b\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/span><\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">serverMiddleware: &#x5B;'..\/api\/auth'],<\/pre>\n<p>\u307e\u305f\u3001\u300c\/api\u300d\u306e\u30d1\u30b9\u306b\u5bfe\u3057\u3066\u30d7\u30ed\u30ad\u30b7\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u306e\u3082\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">serverMiddleware: &#x5B;'..\/api\/auth'], \r\nmodules: &#x5B;'bootstrap-vue\/nuxt', '@nuxtjs\/axios', '@@'], \r\naxios: { proxy: true }, \r\nproxy: { \r\n  '\/api': 'http:\/\/localhost:3000' \r\n},<\/pre>\n<p>\u3053\u3061\u3089\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u30bd\u30fc\u30b9\u3092\u78ba\u8a8d\u3059\u308b\u3068\u3001<\/p>\n<p><a href=\"https:\/\/github.com\/nuxt-community\/auth-module\/blob\/dev\/lib\/module\/defaults.js#L62\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/nuxt-community\/auth-module\/blob\/dev\/lib\/module\/defaults.js#L62<\/a><\/p>\n<p>\u3069\u3046\u3084\u3089\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306eendpoints\u306f\u3001\u30ed\u30b0\u30a4\u30f3\u306b\u5bfe\u3057\u3066\u300c\/api\/auth\/login\u300d\u306eURL\u3001\u30ed\u30b0\u30a2\u30a6\u30c8\u306b\u5bfe\u3057\u3066\u300c\/api\/auth\/logout\u300d\u3001\u30e6\u30fc\u30b6\u30fc\u60c5\u5831\u306b\u5bfe\u3057\u3066\u306f\u300c\/api\/auth\/user\u300d\u306eURL\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u306e\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">endpoints: {\r\n  login: {\r\n    url: '\/api\/auth\/login',\r\n    method: 'post',\r\n    propertyName: 'token'\r\n  },\r\n  logout: {\r\n    url: '\/api\/auth\/logout',\r\n    method: 'post'\r\n  },\r\n  user: {\r\n    url: '\/api\/auth\/user',\r\n    method: 'get',\r\n    propertyName: 'user'\r\n  }\r\n}<\/pre>\n<p>\u305d\u308c\u3067\u306f\u3001\u30b5\u30fc\u30d0\u30fc\u306e\u51e6\u7406\u3067\u3042\u308b\u3001auth.js\u3092\u78ba\u8a8d\u3057\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n<p>\u30b5\u30fc\u30d0\u30fc\u306b\u306f\u300cexpress\u300d\u304c\u7528\u3044\u3089\u308c\u3066\u3044\u3066\u3001&#8217;\/api\/auth&#8217;\u306e\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\uff08\u30cd\u30fc\u30e0\u30b9\u30da\u30fc\u30b9\uff09\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u6a21\u69d8\u3002<\/p>\n<p><strong>api\/auth.js<\/strong><\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\/\/ -- export app --\r\nmodule.exports = {\r\n  path: '\/api\/auth',\r\n  handler: app\r\n};<\/pre>\n<p>\u30ed\u30b0\u30a4\u30f3\u306b\u5bfe\u3057\u3066\u306e\u51e6\u7406\u3092\u78ba\u8a8d\u3059\u308b\u3068\u3001\u30d1\u30b9\u30ef\u30fc\u30c9\u304c123\u3067\u3001\u30e6\u30fc\u30b6\u30fc\u30cd\u30fc\u30e0\u306b\u6587\u5b57\u5217\u304c\u542b\u307e\u308c\u3066\u3044\u305f\u3089\u51e6\u7406\u304c\u901a\u904e\u3059\u308b\u3088\u3046\u306b\u8a18\u8ff0\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\/\/ &#x5B;POST] \/login\r\napp.post('\/login', (req, res, next) =&gt; {\r\n  const { username, password } = req.body \r\n  const valid = username.length &amp;&amp; password === '123'<\/pre>\n<p>\u3053\u3053\u3067\u3001accessToken\u3092\u751f\u6210\u3057\u3066\u3001\u30ec\u30b9\u30dd\u30f3\u30b9 {token: { accessToken } } \u3092\u8fd4\u5374\u3057\u3066\u3044\u308b\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">res.json({\r\n  token: {\r\n    accessToken\r\n  }\r\n})<\/pre>\n<p>\u300cexpress\u300d\u4ee5\u5916\u306eRails\u3068\u304b\u3001\u30b5\u30fc\u30d0\u30fc\u3092\u7528\u3044\u305f\u3068\u304d\u3082\u540c\u69d8\u306b token\u3092\u8fd4\u5374\u3059\u308c\u3070\u826f\u3055\u305d\u3046\u3067\u3059\u306d\u3002<\/p>\n<p>\u7d9a\u3044\u3066\u3001\u300c\/user\u300d\u306e\u51e6\u7406\u3092\u78ba\u8a8d\u3059\u308b\u3068\u3001res.json({ user: req.user }) \u3067\u3001\u30e6\u30fc\u30b6\u30fc\u60c5\u5831\u3092\u8fd4\u5374\u3057\u3066\u3044\u308b\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u3053\u3061\u3089\u306e\u300c\/user\u300d\u306e\u51e6\u7406\u306f\u3001\u3069\u3046\u3084\u3089\u30d6\u30e9\u30a6\u30b6\u30ea\u30ed\u30fc\u30c9\u6642\u306b\u8d70\u3063\u3066\u3044\u308b\u3088\u3046\u3067\u3059\u3002<\/p>\n<p>\u3064\u307e\u308a\u3001\u30d6\u30e9\u30a6\u30b6\u30ea\u30ed\u30fc\u30c9\u6642\u306b\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u98db\u3093\u3067\u304f\u308b\u5f62\u3068\u306a\u3063\u3066\u3044\u308b\u3088\u3046\u3067\u3059\u3002<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">app.get('\/user', (req, res, next) =&gt; {\r\n  \/\/ &#x5B;GET] \/user\r\n  app.get('\/user', (req, res, next) =&gt; {\r\n    console.log(req.header('Authorization'));\r\n    res.json({ user: req.user }) })<\/pre>\n<p>\u5f90\u308d\u306b\u3001console.log(req.header(&#8216;Authorization&#8217;)); \u3067\u3001\u30d8\u30c3\u30c0\u30fc\u306eAuthorization\u3092\u78ba\u8a8d\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u3066\u3001\u30d6\u30e9\u30a6\u30b6\u3092\u30ea\u30ed\u30fc\u30c9\u3057\u3066\u307f\u308b\u3068\u3001Bearer JWT\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IjEyMzQ1IiwicGljdHVyZSI6Imh0dHBzOi8vZ2l0aHViLmNvbS9udXh0LnBuZyIsIm5hbWUiOiJVc2VyIDEyMzQ1Iiwic2NvcGUiOlsidGVzdCIsInVzZXIiXSwiaWF0IjoxNTUwNTkzMDc2fQ.qQLxVIMCYn1Cah5s4B4SkvENe_USb95mtnksSqNTT-0<\/pre>\n<p>\u521d\u671f\u8a2d\u5b9a\u3067\u306f\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u30dc\u30c7\u30a3\u306e\u30e6\u30fc\u30b6\u30fc\u60c5\u5831\u3092\u305f\u3060\u8fd4\u5374\u3057\u3066\u3044\u308b\u72b6\u614b\u3067\u3059\u304c\u3001\u5b9f\u969b\u306b\u30b5\u30fc\u30d0\u30fc\u306b\u5b9f\u88c5\u3059\u308b\u969b\u306f\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u30d8\u30c3\u30c0\u30fc\u306eAuthorization\u306b\u3001JWT\u5f62\u5f0f\u306e\u30c8\u30fc\u30af\u30f3\u304c\u30ea\u30af\u30a8\u30b9\u30c8\u3055\u308c\u3066\u304f\u308b\u306e\u3067\u3001\u3053\u3061\u3089\u3092\u691c\u8a3c\u3057\u3066\u8a8d\u53ef\u3059\u308b\u51e6\u7406\u3092\u66f8\u3051\u3070\u826f\u3055\u305d\u3046\u3067\u3059\u306d\u3002<\/p>\n<p>\u6700\u5f8c\u306b\/logout \u306e\u51e6\u7406\u3092\u78ba\u8a8d<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">app.post('\/logout', (req, res, next) =&gt; {\r\n  res.json({ status: 'OK' })<\/pre>\n<h4>\u30bd\u30fc\u30b7\u30e3\u30eb\u30ed\u30b0\u30a4\u30f3<\/h4>\n<p>\u305d\u306e\u4ed6\u306b\u3082\u3001\u30bd\u30fc\u30b7\u30e3\u30eb\u30ed\u30b0\u30a4\u30f3\u3068\u3057\u3066\u3001\u73fe\u6642\u70b9\u3067 <strong>Facebook, GitHub, Google, Auth0<\/strong>\u306a\u3069\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u3066\u3001\u305d\u308c\u4ee5\u5916\u306b\u3082\u5b9f\u88c5\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u306e\u3088\u3046\u3067\u3059\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9380\" src=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/a259054589d6992c1721a5c5322e35f1.png\" alt=\"\" width=\"289\" height=\"265\" srcset=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/a259054589d6992c1721a5c5322e35f1.png 323w, https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/a259054589d6992c1721a5c5322e35f1-300x275.png 300w\" sizes=\"auto, (max-width: 289px) 100vw, 289px\" \/><\/p>\n<p>\u5404\u30bd\u30fc\u30b7\u30e3\u30eb\u30ed\u30b0\u30a4\u30f3\u306e\u8a2d\u5b9a\u306f\u3001client_id\u306a\u3069\u306e\u8a2d\u5b9a\u306e\u307f\u3067\u5b9f\u88c5\u3067\u304d\u308b\u3088\u3046\u3067\u3001\u975e\u5e38\u306b\u624b\u8efd\u306bOAuth \u8a8d\u8a3c\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p><strong>\u30bd\u30fc\u30b7\u30e3\u30eb\u30ed\u30b0\u30a4\u30f3\u306e\u8a2d\u5b9a\u7b87\u6240<\/strong><\/p>\n<p><a href=\"https:\/\/github.com\/nuxt-community\/auth-module\/blob\/dev\/examples\/demo\/nuxt.config.js#L28\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/nuxt-community\/auth-module\/blob\/dev\/examples\/demo\/nuxt.config.js#L28<\/a><\/p>\n<p>\u30ed\u30b0\u30a4\u30f3\u5f8c\u3001LocalStorage\u3092\u78ba\u8a8d\u3059\u308b\u3068\u3001\u5404\u30b5\u30fc\u30d3\u30b9\u306e\u30c7\u30fc\u30bf\u304c\u751f\u6210\u3055\u308c\u3066\u3044\u308b\u306e\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9377\" src=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/da6da61e43f77c871d0dae2f4f9eb998.png\" alt=\"\" width=\"274\" height=\"94\" \/><\/p>\n<p>\u3068\u3044\u3063\u305f\u5177\u5408\u306b\u624b\u8efd\u306b<strong>JWT\uff08JSON Web Tokens\uff09<\/strong>&amp; <strong>OAuth \u8a8d\u8a3c \u30ed\u30b0\u30a4\u30f3<\/strong>\u304c\u5b9f\u88c5\u3067\u304d\u308b\u30e2\u30b8\u30e5\u30fc\u30eb\u300cauth-module\uff08@nuxtjs\/auth\uff09\u300d\u3092\u6271\u3063\u3066\u898b\u307e\u3057\u305f\u3002<\/p>\n<p>\u3082\u3063\u3068\u3082\u3063\u3068\u3001\u697d\u306b\u8a8d\u8a3c\u8a8d\u53ef\u5468\u308a\u3092\u5b9f\u88c5\u3057\u305f\u3044\u3068\u3044\u3046\u65b9\u306f\u3001\u8a8d\u8a3c\u8a8d\u53ef\u3092\u307e\u308b\u3063\u3068\u304a\u307e\u304b\u305b\u3067\u304d\u308bAuth0\u3092\u4f7f\u3063\u3066\u307f\u3066\u306f\u3044\u304b\u304c\u3067\u3057\u3087\u3046\u304b\uff1f<\/p>\n<p><strong>Auth0<\/strong><\/p>\n<p><a href=\"https:\/\/auth0.com\/jp\/\" target=\"_blank\" rel=\"noopener\">https:\/\/auth0.com\/jp\/<\/a><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9386\" src=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/5ef05758729153b7eef1bd10589740a3.png\" alt=\"\" width=\"171\" height=\"71\" \/><\/p>\n<p>\u6709\u6599\u306e\u30b5\u30fc\u30d3\u30b9\u3067\u306f\u3042\u308a\u307e\u3059\u304c\u3001\u958b\u767a\u30c6\u30b9\u30c8\u3068\u3057\u3066\u7121\u6599\u3067\u3082\u5229\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u3068\u3044\u3063\u305f\u5177\u5408\u3067\u3001\u307e\u305f\u3041\u307e\u305f\u3041\u3002<\/p>\n<p>\u3067\u306f\u3067\u306f\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.webcyou.com\/wp-content\/uploads\/2019\/02\/3f50da1dceafd21e8f17744f69f967ad.png\" alt=\"\" width=\"270\" height=\"63\" class=\"alignnone size-full wp-image-9388\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u3069\u3082\u3067\u3059\u3002 \u3044\u3084\u3041\u3002Nuxt js\u6271\u3063\u3066\u3044\u307e\u3059\u304b\uff1f \u79c1\u306f\u3082\u3063\u3071\u3089 Adobe\u306eExtend Script\u6f2c\u3051\u306e\u65e5\u3005\u3067\u3059\u3002 \u307e\u3041\u3001\u305d\u308c\u306f\u826f\u3044\u3068\u3057\u3066\u3001\u4eca\u56de\u306fNuxt.js\u3067\u3001\u300cJWT\uff08JSON Web Tokens\uff09&#038;amp [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-9294","post","type-post","status-publish","format-standard","hentry","category-javascript"],"_links":{"self":[{"href":"https:\/\/www.webcyou.com\/index.php?rest_route=\/wp\/v2\/posts\/9294","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webcyou.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webcyou.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webcyou.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webcyou.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=9294"}],"version-history":[{"count":20,"href":"https:\/\/www.webcyou.com\/index.php?rest_route=\/wp\/v2\/posts\/9294\/revisions"}],"predecessor-version":[{"id":9389,"href":"https:\/\/www.webcyou.com\/index.php?rest_route=\/wp\/v2\/posts\/9294\/revisions\/9389"}],"wp:attachment":[{"href":"https:\/\/www.webcyou.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9294"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webcyou.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=9294"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webcyou.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=9294"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}