{
    "componentChunkName": "component---src-templates-blog-post-js",
    "path": "/implement-jwt-based-user-authentication-in-a-mern-stack-app-part-12/",
    "result": {"data":{"markdownRemark":{"html":"<h6 id=\"this-blog-post-is-part-of-a-series-you-must-finish-part-1-part-2-part-3-part-4-part-5-part-6-part-7-part-8-part-9-part-10--part-11-before-continuing-here\" style=\"position:relative;\"><a href=\"#this-blog-post-is-part-of-a-series-you-must-finish-part-1-part-2-part-3-part-4-part-5-part-6-part-7-part-8-part-9-part-10--part-11-before-continuing-here\" aria-label=\"this blog post is part of a series you must finish part 1 part 2 part 3 part 4 part 5 part 6 part 7 part 8 part 9 part 10  part 11 before continuing here permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>This blog post is part of a series. You must finish <a href=\"https://hemanta.io/implement-jwt-based-user-authentication-in-a-mern-stack-app-part-1/\">part-1</a>, <a href=\"https://hemanta.io/implement-jwt-based-user-authentication-in-a-mern-stack-app-part-2/\">part-2</a>, <a href=\"https://hemanta.io/implement-jwt-based-user-authentication-in-a-mern-stack-app-part-3/\">part-3</a>, <a href=\"https://hemanta.io/implement-jwt-based-user-authentication-in-a-mern-stack-app-part-4/\">part-4</a>, <a href=\"https://hemanta.io/implement-jwt-based-user-authentication-in-a-mern-stack-app-part-5/\">part-5</a>, <a href=\"https://hemanta.io/implement-jwt-based-user-authentication-in-a-mern-stack-app-part-6/\">part-6</a>, <a href=\"https://hemanta.io/implement-jwt-based-user-authentication-in-a-mern-stack-app-part-7/\">part-7</a>, <a href=\"https://hemanta.io/implement-jwt-based-user-authentication-in-a-mern-stack-app-part-8/\">part-8</a>, <a href=\"https://hemanta.io/implement-jwt-based-user-authentication-in-a-mern-stack-app-part-9/\">part-9</a>, <a href=\"https://hemanta.io/implement-jwt-based-user-authentication-in-a-mern-stack-app-part-10/\">part-10</a> &#x26; <a href=\"https://hemanta.io/implement-jwt-based-user-authentication-in-a-mern-stack-app-part-11/\">part-11</a> before continuing here.</h6>\n<h3 id=\"displaying-login-error-messages\" style=\"position:relative;\"><a href=\"#displaying-login-error-messages\" aria-label=\"displaying login error messages permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Displaying login error messages</h3>\n<p>If you try to log in using the wrong email address or password or both, you would see an error message as shown below.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 626px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/29c5e1d19e1fb38348d243f0d21a45c6/ce661/loginError.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 56.49999999999999%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABG0lEQVQoz5WRy07CQBSG+2jGJSFuXfgovooaoWiUR9ClCSsR0HhDiy1JNb0Xpu1Mmfb8ZqDIxnCZfJlkTvKdk/OPBsC0rLtOJ54yAESErY8GIE/SiefLJC2yrOScuNiMlJUs7Z/05T19HSbPb+JzNDO+NvBhFGFUyUGUjSzPsFxj7I7t0I9lMFmHH8uUF5Xsh1PTdp2QhYxHLE8ErYcJmhUqGo0IaZZJkWCXqMpyGdjNkM67dDlAq6/Qe2j11N1+wvUj9Af1/OOij7N7dO2lfHyLvRPUm6g1FHVdUWvgqI3Dq3mlueJAx/6palHJIifGiedgHGJGAO3wz1EUO67neL7jBa7jfQfCDCDkfDf6n0U+2qoPLWaq8pajfwHhsWbkF7d1mwAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Login error message\"\n        title=\"Login error message\"\n        src=\"/static/29c5e1d19e1fb38348d243f0d21a45c6/ce661/loginError.png\"\n        srcset=\"/static/29c5e1d19e1fb38348d243f0d21a45c6/56d15/loginError.png 200w,\n/static/29c5e1d19e1fb38348d243f0d21a45c6/d9f49/loginError.png 400w,\n/static/29c5e1d19e1fb38348d243f0d21a45c6/ce661/loginError.png 626w\"\n        sizes=\"(max-width: 626px) 100vw, 626px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n        decoding=\"async\"\n      />\n  </a>\n    </span></p>\n<h3 id=\"displaying-registration-error-messages\" style=\"position:relative;\"><a href=\"#displaying-registration-error-messages\" aria-label=\"displaying registration error messages permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Displaying registration error messages</h3>\n<p>If you try to register for the <strong>second time</strong> using the same email address that you used to register the first time, you will receive an error message as shown below.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 611px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/76d63d07db0a1bfcbb8622eb7f36a8c5/a91ec/registrationError.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 75%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAIAAABr+ngCAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABWUlEQVQoz43SS0oDQRAG4DmNO0EUryC48CwexYWarYhX8A4uDEgUjY+gMTGZ90xXp2eSyXTVLzOJARGTab5NV/NTXU07zEyKNGkistZCpCnAsdbedTo3t+37x+6sKABIfdBkOQB4Ysoktamax4lVtFmq2GR1mDl/70+6L/rp2Ty/zvuDjYr3fukHVZhZYqW9KDXTmQAlYBvg1bUHrur2PC8pIi0h8UaBYmWquCMiSarCKJ7OChZYliZ48doCDD3q9jw3KUJtQ7Kh5vUCYpXZn85Km7xqy4KSMS9lo9IuOguG4/hzFH/5NPQSPzKU8XrKsJkuZ4Ybqo9hMPKVG+kgySnn9VTGWVGHWUSRnmhC448FwNYf1CkZnbFtD+b3riw8eFh49Cur7UrHxVtUhycFDi+xfYq9FnbPfzm6wsEFds5+Ffdb2DrB8TWWMyc5wgzRH2H2T92AZlX4G0hyTXjadzG0AAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Registration error message\"\n        title=\"Registration error message\"\n        src=\"/static/76d63d07db0a1bfcbb8622eb7f36a8c5/a91ec/registrationError.png\"\n        srcset=\"/static/76d63d07db0a1bfcbb8622eb7f36a8c5/56d15/registrationError.png 200w,\n/static/76d63d07db0a1bfcbb8622eb7f36a8c5/d9f49/registrationError.png 400w,\n/static/76d63d07db0a1bfcbb8622eb7f36a8c5/a91ec/registrationError.png 611w\"\n        sizes=\"(max-width: 611px) 100vw, 611px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n        decoding=\"async\"\n      />\n  </a>\n    </span></p>\n<p>In addition to client-side validation, we are also doing server-side validation. In order to make sure that server-side validation is working as expected, we will temporarily comment out the highlighted code line as shown below in the <del>RegisterForm.js</del> file.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 441px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/30d4984c84794699fea5fb4a8626b900/7cad8/serverValidation1.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 61%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAIAAADtbgqsAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAB40lEQVQoz12SaW7cMAyFc4/WkqjFWm0tliVbXmamDZqg6P3PUzjTpkAJguCfD+/hkS8YI+vn+f4z397z+TYd79P5NsRa9vvjtq41TEZ1X3GHOoRQ1139WS+EEE65TTVu9/L6S7sx1S2GYW9paY0BZQCMAMEYMKZAKKUY4z8wEKCEYvTl2GLbYkxusbJa6XtWrVxHc4v2CHYdTVT9GewUAiLwNHApM+Aq5Hx+X26nL4vLpWXX1uS9p0B6CkCwoIQBsYL1ghP4C8MFs97Y5dhS27Rza4rJyTb76MdRiaD7ZKQWXHE6SKGl6tA/2xdMKNQajmPOJeXBtNGMvShGRtUXe82key/FNhrnBkQIQk/b+AqsPN7Suk9tWx6PUsLrj3NaV2WkNupqK5WWWispxNf/0haUh+hDGpc9Ledcl7hsKdeQ56GsIRdf91SXMOcYB8cI5pyRSxy9AACnQo1hPfbzcdTjSHm+Zb/X9O12DEoGLQfZF2es7GenJyONMZQy/IQF612uZT/1VJS2Nc/BybamuS1OCi2Y4owBGMGUEIjQruvwRz3vzABwa+l2r6XEMprNm6hEtbI61UZTB1UHfXqzeieU+fyyF4QgatVzSgAEp4xzoJQDodcVCMGYfez0Ocml9RnYb2HJdyqGA53GAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Registration error message\"\n        title=\"Registration error message\"\n        src=\"/static/30d4984c84794699fea5fb4a8626b900/7cad8/serverValidation1.png\"\n        srcset=\"/static/30d4984c84794699fea5fb4a8626b900/56d15/serverValidation1.png 200w,\n/static/30d4984c84794699fea5fb4a8626b900/d9f49/serverValidation1.png 400w,\n/static/30d4984c84794699fea5fb4a8626b900/7cad8/serverValidation1.png 441w\"\n        sizes=\"(max-width: 441px) 100vw, 441px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n        decoding=\"async\"\n      />\n  </a>\n    </span></p>\n<p>This means that we will not get any validation error messages even if we try to register using an invalid email address. However, we are checking for the validity of the email address server-side in the <del>validate.js</del> file. So, if I register using an invalid email address (hemanta@com for example) <del>registrationValidation(req.body)</del> will produce an error and the error message should be displayed on top of the form.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 670px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/2c369bd81ecfa9760fcc1e6db899ff14/6bbca/serverValidation2.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 80%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABZklEQVQoz6WRzU7CQBSFywLhhYw7Naxd+gglJJS3MdGFsHHhm6j4F0lcIKEa/qLQgi2d6bSdztxrWqwV0pIYT75MZm7m3DO5oyh/VLlcLpV2isVioVBQqonURNV8qapar2uapjUajVqtpuA/pIRhyDkHgL7ev2rfPj51bIcAIhcilDIDIcJEaTJnzJrO6KfFKZXMk14WjIEQaXK0ACBiOF+4Lzrt6U63R3p6MBgHg9EmbwPpsnVzLJe6hmFQSqNuUuYSJ22aQ86XDpHRDYjIV1ay65nzBaFMAgoJefzyxubV2Sa8+zqbmN7cAXMpMzFs6XOZkUwIpa676rWFtX/+2fl+sPi0LMsOeAhy28gyzEtC36cmYT4XyAXkISErGUGgYIgSEbaxMW0Rj+DkBndPsdLCw2bEQROPL/HoAvfPvyuVFu6d4fUwurzKT6c9tLE9wocJ3ic8T7HzgXfjtNIeo+3Fr4yTvwCfRz1FsJ7QDgAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Registration error message\"\n        title=\"Registration error message\"\n        src=\"/static/2c369bd81ecfa9760fcc1e6db899ff14/6bbca/serverValidation2.png\"\n        srcset=\"/static/2c369bd81ecfa9760fcc1e6db899ff14/56d15/serverValidation2.png 200w,\n/static/2c369bd81ecfa9760fcc1e6db899ff14/d9f49/serverValidation2.png 400w,\n/static/2c369bd81ecfa9760fcc1e6db899ff14/6bbca/serverValidation2.png 670w\"\n        sizes=\"(max-width: 670px) 100vw, 670px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n        decoding=\"async\"\n      />\n  </a>\n    </span></p>\n<p>If you check the <del>userRoutes.js</del> file, you will see a highlighted line of code as shown below.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 551px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/efc0d66dcb8e85f169bbe27b4813eb76/d1cfa/serverValidation3.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 36.50000000000001%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAA9UlEQVQY021QW26EMBDjHN0kk8ckISEhD1igBcr9b1XBViqtalkj/1i2p1HOu2EZh7i/BwD2TXbyBQ7AOfD/0GgtSorHkre5d7YFaaS2Eo1ArVFpoxmXjAtKKaPnuaPRirkY47iU3HbzYULqUl6Pdf6Ytm3cP6dpGYch+tSHafXB/TYjABNKKW5aIYGzN/p4AFBGyJlECTB68poBHP6alVBtKFhm20c0Vrogg8s5+9iXoZZaa019SvP09MaQW/UrmQubh37au+feep+elUtptbYGndUX0VkTvEMh7rMbVIAInUfTeik1MEoIuX7zak1+1KXvtb8ARpA8WwsQD9oAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Registration error message\"\n        title=\"Registration error message\"\n        src=\"/static/efc0d66dcb8e85f169bbe27b4813eb76/d1cfa/serverValidation3.png\"\n        srcset=\"/static/efc0d66dcb8e85f169bbe27b4813eb76/56d15/serverValidation3.png 200w,\n/static/efc0d66dcb8e85f169bbe27b4813eb76/d9f49/serverValidation3.png 400w,\n/static/efc0d66dcb8e85f169bbe27b4813eb76/d1cfa/serverValidation3.png 551w\"\n        sizes=\"(max-width: 551px) 100vw, 551px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n        decoding=\"async\"\n      />\n  </a>\n    </span></p>\n<p>You will understand the above line of code when you console log the <del>error</del> object as shown below. The error message is available as the value of the <del>message</del> key. And the object the <del>message</del> key is part of is the first element of the <del>details</del> key, which is an array.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 636px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/97828a317e3980dd99a7ca00b766579f/44bb2/serverValidation4.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 43%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAA6klEQVQoz4WRy27CMBBF8x2uY4ONYzqeEMePOCaLPBBV//+LqkDVVhWEs7qbo3s1U4zjOC9z32fvHaJBrJvWNtYCQF3Xbeu890et2SOKEONyuRiDKSUAIIS83aCU3gMhhFL6WI6xi7ELXXf9uKY+s5JxzhnnjK3hDntC4UO01mp9dM4ppSil5V/YFoX3HuCdrz1MiL2UQgohpTgcpJSCb8sO4XMexuSWIeW2ThZTY5I1Q2iyxUrwjfYCAM45h+CnaYox7He7cl1O1/1P7vQrV5U2iEopPJ3090tuY9c78Rcy5+znMfRV1T/5Cz5tSwIUiUkJAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Error object\"\n        title=\"Error object\"\n        src=\"/static/97828a317e3980dd99a7ca00b766579f/44bb2/serverValidation4.png\"\n        srcset=\"/static/97828a317e3980dd99a7ca00b766579f/56d15/serverValidation4.png 200w,\n/static/97828a317e3980dd99a7ca00b766579f/d9f49/serverValidation4.png 400w,\n/static/97828a317e3980dd99a7ca00b766579f/44bb2/serverValidation4.png 636w\"\n        sizes=\"(max-width: 636px) 100vw, 636px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n        decoding=\"async\"\n      />\n  </a>\n    </span></p>\n<p>Go to <a href=\"https://hemanta.io/implement-jwt-based-user-authentication-in-a-mern-stack-app-part-13/\">part-13</a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    position: relative;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n    line-height: 1.4;\n  }\n  \n  .grvsc-code {\n    display: table;\n  }\n  \n  .grvsc-line {\n    display: table-row;\n    box-sizing: border-box;\n    width: 100%;\n    position: relative;\n  }\n  \n  .grvsc-line > * {\n    position: relative;\n  }\n  \n  .grvsc-gutter-pad {\n    display: table-cell;\n    padding-left: 0.75rem;\n    padding-left: calc(var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem)) / 2);\n  }\n  \n  .grvsc-gutter {\n    display: table-cell;\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    user-select: none;\n  }\n  \n  .grvsc-gutter::before {\n    content: attr(data-content);\n  }\n  \n  .grvsc-source {\n    display: table-cell;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-source:empty::after {\n    content: ' ';\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    user-select: none;\n  }\n  \n  .grvsc-gutter + .grvsc-source {\n    padding-left: 0.75rem;\n    padding-left: calc(var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem)) / 2);\n  }\n  \n  /* Line transformer styles */\n  \n  .grvsc-has-line-highlighting > .grvsc-code > .grvsc-line::before {\n    content: ' ';\n    position: absolute;\n    width: 100%;\n  }\n  \n  .grvsc-line-diff-add::before {\n    background-color: var(--grvsc-line-diff-add-background-color, rgba(0, 255, 60, 0.2));\n  }\n  \n  .grvsc-line-diff-del::before {\n    background-color: var(--grvsc-line-diff-del-background-color, rgba(255, 0, 20, 0.2));\n  }\n  \n  .grvsc-line-number {\n    padding: 0 2px;\n    text-align: right;\n    opacity: 0.7;\n  }\n  \n</style>","frontmatter":{"title":"Implement JWT Based User Authentication in a MERN Stack App - Part 12","date":"2021-05-24"}}},"pageContext":{"slug":"/implement-jwt-based-user-authentication-in-a-mern-stack-app-part-12/","prev":{"fields":{"slug":"/implement-jwt-based-user-authentication-in-a-mern-stack-app-part-13/"},"frontmatter":{"modules":null}},"next":{"fields":{"slug":"/implement-jwt-based-user-authentication-in-a-mern-stack-app-part-10/"},"frontmatter":{"modules":null}}}},
    "staticQueryHashes": ["3159585216"]}