{"id":77960,"date":"2024-09-25T10:59:31","date_gmt":"2024-09-25T07:29:31","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/session-state-management-js-react-49fg\/"},"modified":"2024-09-25T10:59:31","modified_gmt":"2024-09-25T07:29:31","slug":"session-state-management-js-react-49fg","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/session-state-management-js-react-49fg\/","title":{"rendered":"\u062c\u0644\u0633\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0648\u0644\u062a\u06cc | JS | \u0648\u0627\u06a9\u0646\u0634 \u0646\u0634\u0627\u0646 \u062f\u0647\u06cc\u062f"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang <\/p>\n<p>  \u0645\u0642\u062f\u0645\u0647<\/p>\n<p>\u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0644\u0633\u0647 \u0645\u0633\u0626\u0648\u0644 \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062e\u0627\u0635 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u0686\u0646\u062f\u06cc\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06cc\u0627 \u062a\u0639\u0627\u0645\u0644 \u0628\u0627 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628 \u0627\u0633\u062a. \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0648\u0628\u060c \u00ab\u062c\u0644\u0633\u0647\u00bb \u0628\u0647 \u062f\u0648\u0631\u0647\u200c\u0627\u06cc \u0627\u0637\u0644\u0627\u0642 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u062f\u0631 \u0637\u06cc \u0622\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647 \u0637\u0648\u0631 \u0641\u0639\u0627\u0644 \u0628\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u062a\u0639\u0627\u0645\u0644 \u062f\u0627\u0631\u062f\u060c \u0627\u0632 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0648\u0627\u0631\u062f \u0633\u06cc\u0633\u062a\u0645 \u0645\u06cc\u200c\u0634\u0648\u062f \u0634\u0631\u0648\u0639 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0627\u0648 \u0627\u0632 \u0633\u06cc\u0633\u062a\u0645 \u062e\u0627\u0631\u062c \u0645\u06cc\u200c\u0634\u0648\u062f \u06cc\u0627 \u067e\u0633 \u0627\u0632 \u0645\u062f\u062a\u06cc \u0639\u062f\u0645 \u0641\u0639\u0627\u0644\u06cc\u062a \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u0645\u06cc\u200c\u0631\u0633\u062f.<\/p>\n<p>  \u0627\u0646\u0648\u0627\u0639 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0644\u0633\u0627\u062a<\/p>\n<p>\u06a9\u0648\u06a9\u06cc \u0647\u0627: \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u06a9\u0648\u0686\u06a9 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631.<br \/>\n\u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u062d\u0644\u06cc\/\u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u062c\u0644\u0633\u0647: \u0631\u0648\u0634 \u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0648\u0628 \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631.<br \/>\nJWT (JSON Web Tokens): \u0631\u0648\u0634\u06cc \u0628\u062f\u0648\u0646 \u062d\u0627\u0644\u062a \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0644\u0633\u0627\u062a \u0628\u0627 \u062a\u0648\u06a9\u0646 \u0647\u0627\u06cc \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647.<br \/>\n\u0641\u0631\u0648\u0634\u06af\u0627\u0647 \u0647\u0627\u06cc \u062c\u0644\u0633\u0647 \u0633\u0645\u062a \u0633\u0631\u0648\u0631: \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0646\u0634\u0633\u062a \u062f\u0627\u0626\u0645\u06cc \u062f\u0631 \u0633\u0631\u0648\u0631\u06cc \u06a9\u0647 \u062c\u0644\u0633\u0627\u062a \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0631\u062f\u06cc\u0627\u0628\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>  \u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0644\u0633\u0627\u062a \u0628\u0627 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0648 React<\/p>\n<p>  \u06a9\u0648\u06a9\u06cc \u0647\u0627<\/p>\n<p>\u06a9\u0648\u06a9\u06cc\u200c\u0647\u0627 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u0648 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f \u062a\u0627 \u067e\u0633 \u0627\u0632 \u06cc\u06a9 \u0632\u0645\u0627\u0646 \u062e\u0627\u0635 \u0645\u0646\u0642\u0636\u06cc \u0634\u0648\u0646\u062f. \u0622\u0646\u0647\u0627 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0644\u0633\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f \u0632\u06cc\u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0627 \u067e\u0627\u0633\u062e \u0647\u0627\u06cc \u0633\u0631\u0648\u0631 \u062a\u0646\u0638\u06cc\u0645 \u0634\u0648\u0646\u062f \u0648 \u0628\u0627 \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0647 \u0633\u0631\u0648\u0631 \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u0631\u0633\u0627\u0644 \u0634\u0648\u0646\u062f.<\/p>\n<p>\/\/ Setting a cookie<br \/>\ndocument.cookie = &#8220;sessionId=9808@#45; expires=Fri, 31 Dec 2024 23:59:59 GMT; path=\/login&#8221;;<\/p>\n<p>\/\/ Reading a cookie<br \/>\nconst cookies = (cookieValue) =&gt; {<br \/>\n   return cookieValue.split(&#8216;; &#8216;).reduce((acc, cookie) =&gt; {<br \/>\n    const [key, value] = cookie.split(&#8216;=&#8217;);<br \/>\n    acc[key] = value;<br \/>\n    return acc;<br \/>\n   }, {});<br \/>\n}<\/p>\n<p>const cookieObj = cookies(cookie)<\/p>\n<p>console.log(cookieObj.sessionId) \/\/ 9808@#45<br \/>\nconsole.log(cookieObj.expires) \/\/ Fri, 31 Dec 2024 23:59:59 GMT<br \/>\nconsole.log(cookieObj.path) \/\/ \/login<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0645\u062d\u0644\u06cc \u0648 \u062c\u0644\u0633\u0647<\/p>\n<p>localStorage \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u062f\u0631 \u062c\u0644\u0633\u0627\u062a \u0645\u0631\u0648\u0631\u06af\u0631 \u062d\u0641\u0638 \u0645\u06cc \u06a9\u0646\u062f.<br \/>\nsessionStorage \u0641\u0642\u0637 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u062f\u062a \u062c\u0644\u0633\u0647 \u0635\u0641\u062d\u0647 (\u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0628\u0631\u06af\u0647 \u06cc\u0627 \u067e\u0646\u062c\u0631\u0647 \u0628\u0633\u062a\u0647 \u0634\u0648\u062f) \u062d\u0641\u0638 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\/\/ React Example<br \/>\nimport React from &#8220;react&#8221;;<br \/>\nimport { useState } from &#8220;react&#8221;;<br \/>\nimport { useEffect } from &#8220;react&#8221;;<\/p>\n<p>const Hero = () =&gt; {<br \/>\n  \/\/ Accessing theme from localStorage for initial state<br \/>\n  const [theme, setTheme] = useState(<br \/>\n    localStorage.getItem(&#8220;theme&#8221;) === &#8220;dark&#8221; ? &#8220;dark&#8221; : &#8220;light&#8221;<br \/>\n  );<\/p>\n<p>  useEffect(() =&gt; {<br \/>\n    \/\/ Updating local storage if theme state is changed<br \/>\n    localStorage.setItem(&#8220;theme&#8221;, theme);<br \/>\n  }, [theme]);<\/p>\n<p>  \/\/ Toggling theme between dark and light<br \/>\n  const toggleTheme = () =&gt; {<br \/>\n    setTheme(theme === &#8220;dark&#8221; ? &#8220;light&#8221; : &#8220;dark&#8221;);<br \/>\n  };<\/p>\n<p>  return (<br \/>\n    &lt;section className={`${theme === &#8220;dark&#8221; ? &#8220;bg-gray-900&#8221; : &#8220;&#8221;}  text-white`}&gt;<br \/>\n      &lt;div className=&#8221;mx-auto px-4 py-32 lg:flex lg:h-screen lg:items-center lg:justify-between max-w-[1200px]&#8221;&gt;<br \/>\n        &lt;h1&gt;Theme Change Example&lt;\/h1&gt;<br \/>\n        &lt;button<br \/>\n          className=&#8221;fixed top-4 right-4 rounded bg-blue-600 p-2 text-white hover:bg-transparent hover:text-white focus:outline-none focus:ring&#8221;<br \/>\n          onClick={toggleTheme}<br \/>\n        &gt;<br \/>\n          {theme === &#8220;dark&#8221; ? &#8221; &#8221; : &#8221; &#8220;}<br \/>\n        &lt;\/button&gt;<br \/>\n      &lt;\/div&gt;<br \/>\n    &lt;\/section&gt;<br \/>\n  );<br \/>\n};<\/p>\n<p>export default Hero;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a JWT<\/p>\n<p>\u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a JWT \u06cc\u06a9 \u0645\u06a9\u0627\u0646\u06cc\u0633\u0645 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u062f\u0648\u0646 \u062d\u0627\u0644\u062a \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u062a\u0648\u06a9\u0646 \u0627\u0633\u062a.<\/p>\n<p>\/\/ Manually setting tokens for login<br \/>\nconst login = async (username, password) =&gt; {<br \/>\n  const response = await fetch(&#8216;https:\/\/example.com\/api\/login&#8217;, {<br \/>\n    method: &#8216;POST&#8217;,<br \/>\n    headers: {<br \/>\n      &#8216;Content-Type&#8217;: &#8216;application\/json&#8217;,<br \/>\n    },<br \/>\n    body: JSON.stringify({ username, password }),<br \/>\n  });<\/p>\n<p>  const data = await response.json();<br \/>\n  localStorage.setItem(&#8216;token&#8217;, data.token);<br \/>\n};<\/p>\n<p>\/\/ Checking tokens with Authorization headers<br \/>\nconst getProtectedData = async () =&gt; {<br \/>\n  const token = localStorage.getItem(&#8216;token&#8217;);<br \/>\n  const response = await fetch(&#8216;https:\/\/example.com\/api\/protected&#8217;, {<br \/>\n    method: &#8216;GET&#8217;,<br \/>\n    headers: {<br \/>\n      &#8216;Authorization&#8217;: `Bearer ${token}`,<br \/>\n    },<br \/>\n  });<\/p>\n<p>  const protectedData = await response.json();<br \/>\n  return protectedData<br \/>\n};<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0647\u0646\u06af\u0627\u0645 \u0648\u0631\u0648\u062f\u060c \u0633\u0631\u0648\u0631 \u06cc\u06a9 JWT \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u0634\u062a\u0631\u06cc \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u06a9\u0646\u062f.<br \/>\n\u0645\u0634\u062a\u0631\u06cc JWT \u0631\u0627 \u062f\u0631 localStorage \u06cc\u0627 sessionStorage \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f.<br \/>\n\u062f\u0631 \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0647 \u06cc\u06a9 \u0645\u0646\u0628\u0639 \u0645\u062d\u0627\u0641\u0638\u062a \u0634\u062f\u0647\u060c \u0645\u0634\u062a\u0631\u06cc JWT \u0631\u0627 \u062f\u0631 \u0647\u062f\u0631\u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u06a9\u0646\u062f.<br \/>\n\u0645\u0646\u0628\u0639 &#8211; https:\/\/www.npmjs.com\/package\/react-jwt <\/p>\n<p>  \u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0644\u0633\u0647 \u062f\u0631 Next.js<\/p>\n<p>\u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0644\u0633\u0647 \u062f\u0631 Next.js \u0628\u0647 \u062f\u0644\u06cc\u0644 \u062a\u0631\u06a9\u06cc\u0628 \u0632\u0645\u06cc\u0646\u0647 \u0647\u0627\u06cc \u06a9\u0644\u0627\u06cc\u0646\u062a \u0648 \u0633\u0631\u0648\u0631 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0642\u0648\u06cc \u062a\u0631 \u0628\u0627\u0634\u062f. \u0631\u0648\u0634 \u0647\u0627\u06cc \u0645\u062a\u062f\u0627\u0648\u0644 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0644\u0633\u0627\u062a \u062f\u0631 Next.js \u0634\u0627\u0645\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u0648\u06a9\u06cc \u0647\u0627\u060c JWT \u0647\u0627 \u0648 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0634\u062e\u0635 \u062b\u0627\u0644\u062b \u0627\u0633\u062a. \u0645\u0627 \u0642\u0628\u0644\u0627 \u0631\u0648\u06cc\u06a9\u0631\u062f \u06a9\u0648\u06a9\u06cc\u200c\u0647\u0627 \u0648 JWT \u0631\u0627 \u062f\u06cc\u062f\u0647\u200c\u0627\u06cc\u0645 \u0648 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0634\u062e\u0635 \u062b\u0627\u0644\u062b \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 next-auth\u060c \u06a9\u0647 \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0645\u062d\u0628\u0648\u0628 \u0628\u0631\u0627\u06cc Next.js \u0627\u0633\u062a \u06a9\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0644\u0633\u0647 \u0631\u0627 \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<p>\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062c\u0644\u0633\u0647: \u062c\u0644\u0633\u0627\u062a \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u062f\u0631 JWT (\u0628\u0631\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u062f\u0648\u0646 \u062d\u0627\u0644\u062a) \u06cc\u0627 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f.<br \/>\n\u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u062c\u0644\u0633\u0627\u062a: Next-auth \u0627\u0646\u0642\u0636\u0627\u060c \u062a\u0645\u062f\u06cc\u062f \u0648 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062c\u0644\u0633\u0647 \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>  \u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc<\/p>\n<p>npm install next-auth<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0627\u0641\u0632\u0648\u062f\u0646 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0627\u0639\u062a\u0628\u0627\u0631 Github<\/p>\n<p>import NextAuth from &#8220;next-auth&#8221;<br \/>\nimport GithubProvider from &#8220;next-auth\/providers\/github&#8221;<\/p>\n<p>export const authOptions = {<br \/>\n  \/\/ Configure one or more authentication providers<br \/>\n  providers: [<br \/>\n    GithubProvider({<br \/>\n      clientId: process.env.GITHUB_ID,<br \/>\n      clientSecret: process.env.GITHUB_SECRET,<br \/>\n    }),<br \/>\n  ],<br \/>\n}<\/p>\n<p>const handler = NextAuth(authOptions)<\/p>\n<p>export { handler as GET, handler as POST }<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u062c\u0644\u0633\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0644 \u0628\u0631\u0646\u0627\u0645\u0647<\/p>\n<p>&#8220;use client&#8221;;<br \/>\nimport { SessionProvider } from &#8220;next-auth\/react&#8221;<br \/>\nimport React from &#8220;react&#8221;;<\/p>\n<p>const SessionWrapper = ({children}:{children:React.ReactNode}) =&gt; {<br \/>\n    return &lt;SessionProvider&gt;{children}&lt;\/SessionProvider&gt;<br \/>\n}<br \/>\nexport default SessionWrapper<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc Layout \u0628\u0627 SessionWrapper<\/p>\n<p>import &#8220;.\/globals.css&#8221;;<br \/>\nimport Navbar from &#8220;@\/components\/Navbar&#8221;;<br \/>\nimport Footer from &#8220;@\/components\/Footer&#8221;;<br \/>\nimport SessionWrapper from &#8220;@\/components\/SessionWrapper&#8221;;<\/p>\n<p>export default function RootLayout({<br \/>\n  children,<br \/>\n}: Readonly&lt;{<br \/>\n  children: React.ReactNode;<br \/>\n}&gt;) {<br \/>\n  return (<br \/>\n    &lt;html lang=&#8221;en&#8221;&gt;<br \/>\n      &lt;body&gt;<br \/>\n        &lt;SessionWrapper&gt;<br \/>\n          &lt;Navbar \/&gt;<br \/>\n            &lt;main&gt;{children}&lt;\/main&gt;<br \/>\n          &lt;Footer \/&gt;<br \/>\n        &lt;\/SessionWrapper&gt;<br \/>\n      &lt;\/body&gt;<br \/>\n    &lt;\/html&gt;<br \/>\n  );<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0648 \u0648\u0636\u0639\u06cc\u062a \u062c\u0644\u0633\u0647<\/p>\n<p>import { useSession } from &#8220;next-auth\/react&#8221;<\/p>\n<p>export default function Component() {<br \/>\n  const { data: session, status } = useSession()<\/p>\n<p>  if (status === &#8220;authenticated&#8221;) {<br \/>\n    return &lt;p&gt;Signed in as {session.user.email}&lt;\/p&gt;<br \/>\n  }<\/p>\n<p>  return &lt;a href=&#8221;\/api\/auth\/signin&#8221;&gt;Sign in&lt;\/a&gt;<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062f\u0627\u062f\u0647: \u0627\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0633\u0647 \u0645\u0642\u062f\u0627\u0631 \u0628\u0627\u0634\u062f: Session \/ undefined \/ null.<br \/>\n\u0648\u0642\u062a\u06cc \u062c\u0644\u0633\u0647 \u0647\u0646\u0648\u0632 \u0648\u0627\u06a9\u0634\u06cc \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u062f\u0627\u062f\u0647 \u0647\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0646\u0634\u062f\u0647 \u062e\u0648\u0627\u0647\u0646\u062f \u0628\u0648\u062f<br \/>\n\u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0646\u062a\u0648\u0627\u0646\u062f \u062c\u0644\u0633\u0647 \u0631\u0627 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u06a9\u0646\u062f\u060c \u062f\u0627\u062f\u0647 \u0647\u0627 \u067e\u0648\u0686 \u062e\u0648\u0627\u0647\u0646\u062f \u0628\u0648\u062f<br \/>\n\u062f\u0631 \u0635\u0648\u0631\u062a \u0645\u0648\u0641\u0642\u06cc\u062a\u060c \u062f\u0627\u062f\u0647 \u0647\u0627 Session \u062e\u0648\u0627\u0647\u0646\u062f \u0634\u062f.<br \/>\n\u0648\u0636\u0639\u06cc\u062a: \u0646\u06af\u0627\u0634\u062a enum \u0628\u0647 \u0633\u0647 \u062d\u0627\u0644\u062a \u062c\u0644\u0633\u0647 \u0645\u0645\u06a9\u0646: &#8220;\u0628\u0627\u0631\u06af\u06cc\u0631\u06cc&#8221; | &#8220;\u062a\u0623\u06cc\u06cc\u062f \u0634\u062f\u0647&#8221; | &#8220;\u063a\u06cc\u0631 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a&#8221;<\/p>\n<p>  \u0647\u06cc\u062f\u0631\u0627\u062a\u0627\u0633\u06cc\u0648\u0646 \u062d\u0627\u0644\u062a<\/p>\n<p>Hydration \u0641\u0631\u0622\u06cc\u0646\u062f\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0622\u0646 HTML \u0631\u0646\u062f\u0631 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u0633\u0631\u0648\u0631 \u062a\u0648\u0633\u0637 React \u0628\u0631 \u0631\u0648\u06cc \u06a9\u0644\u0627\u06cc\u0646\u062a &#8220;\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f&#8221; \u0645\u06cc \u0634\u0648\u062f \u0648 React \u0645\u0646\u0637\u0642 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062e\u0648\u062f \u0631\u0627 (\u0645\u062b\u0644\u0627\u064b \u0634\u0646\u0648\u0646\u062f\u06af\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f\u060c \u0645\u062f\u06cc\u0631\u06cc\u062a \u062d\u0627\u0644\u062a) \u0628\u0647 HTML \u0645\u0648\u062c\u0648\u062f \u0645\u062a\u0635\u0644 \u0645\u06cc \u06a9\u0646\u062f.<br \/>\n\u062f\u0631 Next.js\u060c \u0647\u06cc\u062f\u0631\u0627\u062a\u0627\u0633\u06cc\u0648\u0646 \u062d\u0627\u0644\u062a \u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0635\u0641\u062d\u0647 \u0627\u06cc \u062a\u0648\u0633\u0637 \u0633\u0631\u0648\u0631 \u0631\u0646\u062f\u0631 \u0645\u06cc \u0634\u0648\u062f\u060c \u0627\u0632 \u0642\u0628\u0644 \u0628\u0627 HTML \u0648 \u0628\u0631\u062e\u06cc \u0627\u0632 \u062d\u0627\u0644\u062a \u0647\u0627\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0631\u0646\u062f\u0631 \u0645\u06cc \u0634\u0648\u062f\u060c \u0627\u0645\u0627 \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0645\u0631\u0648\u0631\u06af\u0631 \u06a9\u0646\u062a\u0631\u0644 \u0631\u0627 \u0628\u0647 \u062f\u0633\u062a \u06af\u0631\u0641\u062a\u060c \u0628\u0631\u0646\u0627\u0645\u0647 React \u0633\u0645\u062a \u06a9\u0644\u0627\u06cc\u0646\u062a \u0628\u0627\u06cc\u062f \u0622\u0646 HTML \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u0633\u0631\u0648\u0631 \u0631\u0627 \u0628\u06af\u06cc\u0631\u062f \u0648 \u0628\u0627 \u067e\u06cc\u0648\u0633\u062a \u06a9\u0631\u062f\u0646 \u0634\u0646\u0648\u0646\u062f\u06af\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f\u060c \u0634\u0631\u0648\u0639 \u0645\u062c\u062f\u062f \u062d\u0627\u0644\u062a\u060c \u0648 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0633\u0645\u062a \u0633\u0631\u0648\u06cc\u0633 \u06af\u06cc\u0631\u0646\u062f\u0647 \u0628\u0627 HTML \u0627\u0632 \u067e\u06cc\u0634 \u0631\u0646\u062f\u0631 \u0634\u062f\u0647 \u062f\u0631\u0633\u062a \u0631\u0641\u062a\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0622\u0646 \u0631\u0627 &#8220;\u0647\u06cc\u062f\u0631\u0627\u062a\u0647&#8221; \u06a9\u0646\u06cc\u062f.<br \/>\n\u0627\u06af\u0631 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627 \u0628\u0647 \u062d\u0627\u0644\u062a \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0648\u0627\u0628\u0633\u062a\u0647 \u0628\u0627\u0634\u0646\u062f\u060c \u0647\u06cc\u062f\u0631\u0627\u062a\u0627\u0633\u06cc\u0648\u0646 \u0646\u06cc\u0632 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0631\u062e \u062f\u0647\u062f.<br \/>\n\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a<\/p>\n<p>&#8220;use client&#8221;;<br \/>\nimport ProfileCard from &#8220;.\/ProfileCard&#8221;;<br \/>\nimport BlogsFetch from &#8220;.\/BlogsFetch&#8221;;<br \/>\nimport { useMarkdownStore } from &#8220;@\/store\/useStore&#8221;;<\/p>\n<p>const ProfileSection = () =&gt; {<br \/>\n  const user = useMarkdownStore((state) =&gt; state.user);<\/p>\n<p>  return (<br \/>\n    &lt;div className=&#8221;flex flex-col lg:flex-row justify-center lg:justify-start gap-5 lg:gap-10 px-5&#8243;&gt;<br \/>\n      &lt;ProfileCard user={user} \/&gt;<br \/>\n      &lt;BlogsFetch userId={user.uid as string} \/&gt;<br \/>\n    &lt;\/div&gt;<br \/>\n  );<br \/>\n};<\/p>\n<p>export default ProfileSection;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u062a\u063a\u06cc\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647 \u0648\u0636\u0639\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631 \u0627\u0632 zustand \u0627\u0634\u0627\u0631\u0647 \u062f\u0627\u0631\u062f \u06a9\u0647 \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0648\u0644\u062a\u06cc \u0627\u0633\u062a. \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u0646\u0627\u0647\u0645\u06af\u0627\u0645 \u0627\u0633\u062a \u0648 \u062a\u0648\u0633\u0637 \u0645\u0624\u0644\u0641\u0647 BlogsFetch \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u0627\u0632 \u0627\u06cc\u0646 user.uid \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0627\u0645\u0627 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0648\u0642\u062a\u06cc \u0645\u0624\u0644\u0641\u0647 \u0646\u0635\u0628 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u06a9\u0627\u0631\u0628\u0631 null \u0631\u0627 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f \u0648 \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u06cc\u06a9 \u0622\u0631\u0627\u06cc\u0647 \u062e\u0627\u0644\u06cc \u0631\u0627 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f \u0632\u06cc\u0631\u0627 \u0648\u0636\u0639\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631 \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0647\u06cc\u062f\u0631\u0627\u062a\u0647 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f.<br \/>\n\u0628\u0631\u0627\u06cc \u0631\u0641\u0639 \u0627\u06cc\u0646 \u0645\u0634\u06a9\u0644\u060c \u0628\u0627\u06cc\u062f \u0645\u0646\u062a\u0638\u0631 \u0628\u0645\u0627\u0646\u06cc\u0645 \u062a\u0627 \u0648\u0636\u0639\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631 \u0628\u0627 \u0645\u0642\u062f\u0627\u0631\u06cc \u0647\u06cc\u062f\u0631\u0627\u062a\u0647 \u0634\u0648\u062f \u0648 \u0633\u067e\u0633 \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645.<\/p>\n<p>const queryInfinite = useInfiniteQuery({<br \/>\n  queryKey: userId ? [&#8220;blogs&#8221;, userId] : [&#8220;blogs&#8221;],<br \/>\n  queryFn: () =&gt;<br \/>\n    userId<br \/>\n      ? getUserBlogsFromDb(userId, lastDoc)<br \/>\n      : getBlogsFromDb(filters, lastDoc),<br \/>\n  initialPageParam: undefined,<br \/>\n  getPreviousPageParam: (firstPage) =&gt; firstPage.firstVisibleDoc,<br \/>\n  getNextPageParam: (lastPage) =&gt; lastPage.lastVisibleDoc,<br \/>\n  enabled: userId ? true : false,<br \/>\n});<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u0627 \u0627\u0632 react query \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627 \u0648 \u062c\u0647\u0634 \u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0627\u06cc\u0646 1 \u0648\u06cc\u0698\u06af\u06cc \u0628\u0647 \u0646\u0627\u0645 enabled \u062f\u0627\u0631\u062f \u06a9\u0647 \u067e\u0633 \u0627\u0632 \u0622\u0645\u0627\u062f\u0647 \u0634\u062f\u0646 \u0648 \u0647\u06cc\u062f\u0631\u0627\u062a\u0647 \u0634\u062f\u0646 \u062d\u0627\u0644\u062a userId \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0648\u0627\u06a9\u0634\u06cc \u0645\u06cc \u06a9\u0646\u062f. \u0627\u0632 \u0637\u0631\u0641 \u062f\u06cc\u06af\u0631\u060c \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 userId \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0639\u0645\u0644\u06cc\u0627\u062a \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627 \u0622\u0645\u0627\u062f\u0647 \u0634\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u0642\u0644\u0627\u0628 useEffect \u0628\u0631\u0627\u06cc \u0648\u0627\u06a9\u0634\u06cc \u0645\u062c\u062f\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>  \u0645\u0646\u0627\u0628\u0639<\/p>\n<p>https:\/\/next-auth.js.org\/getting-started\/introduction <\/p>\n<p>https:\/\/tanstack.com\/query\/latest <\/p>\n<p>https:\/\/swr.vercel.app\/ <\/p>\n<p>https:\/\/github.com\/pmndrs\/zustand <\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u067e\u0633\u062a \u062a\u0645\u0627\u0645 \u0634\u062f\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u0645\u0646 \u062a\u0645\u0627\u0633 \u0628\u06af\u06cc\u0631\u06cc\u062f &#8211;<\/p>\n<p>\u0627\u06cc\u0646\u0633\u062a\u0627\u06af\u0631\u0627\u0645 &#8211; https:\/\/www.instagram.com\/supremacism__shubh\/\u0644\u06cc\u0646\u06a9\u062f\u06cc\u0646 &#8211; https:\/\/www.linkedin.com\/in\/shubham-tiwari-b7544b193\/\u0627\u06cc\u0645\u06cc\u0644 &#8211; shubhmtiwri00@gmail.com<\/p>\n<p>\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631 \u0644\u06cc\u0646\u06a9 \u0632\u06cc\u0631 \u0628\u0647 \u0645\u0646 \u06a9\u0645\u06a9 \u06a9\u0646\u06cc\u062f \u0628\u0627 \u062a\u0634\u06a9\u0631\ud83d\udc47\ud83d\udc47https:\/\/www.buymeacoffee.com\/waaduheck<\/p>\n<p>\u0627\u06cc\u0646 \u067e\u0633\u062a \u0647\u0627 \u0631\u0627 \u0646\u06cc\u0632 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f<\/p>\n<div data-article-id=\"2013928\" id=\"article-body\">\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_81 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/session-state-management-js-react-49fg\/#%D9%85%D9%82%D8%AF%D9%85%D9%87\" >\u0645\u0642\u062f\u0645\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/session-state-management-js-react-49fg\/#%D8%A7%D9%86%D9%88%D8%A7%D8%B9_%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA_%D8%AC%D9%84%D8%B3%D8%A7%D8%AA\" >\u0627\u0646\u0648\u0627\u0639 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0644\u0633\u0627\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/session-state-management-js-react-49fg\/#%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA_%D8%AC%D9%84%D8%B3%D8%A7%D8%AA_%D8%A8%D8%A7_%D8%AC%D8%A7%D9%88%D8%A7_%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA_%D9%88_React\" >\u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0644\u0633\u0627\u062a \u0628\u0627 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0648 React<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/session-state-management-js-react-49fg\/#%DA%A9%D9%88%DA%A9%DB%8C_%D9%87%D8%A7\" >\u06a9\u0648\u06a9\u06cc \u0647\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/session-state-management-js-react-49fg\/#%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D9%85%D8%AD%D9%84%DB%8C_%D9%88_%D8%AC%D9%84%D8%B3%D9%87\" >\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0645\u062d\u0644\u06cc \u0648 \u062c\u0644\u0633\u0647<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/session-state-management-js-react-49fg\/#%D8%A7%D8%AD%D8%B1%D8%A7%D8%B2_%D9%87%D9%88%DB%8C%D8%AA_JWT\" >\u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a JWT<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/session-state-management-js-react-49fg\/#%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA_%D8%AC%D9%84%D8%B3%D9%87_%D8%AF%D8%B1_Nextjs\" >\u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0644\u0633\u0647 \u062f\u0631 Next.js<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/session-state-management-js-react-49fg\/#%D9%86%D8%B5%D8%A8_%D9%88_%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C\" >\u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/session-state-management-js-react-49fg\/#%D8%A7%D9%81%D8%B2%D9%88%D8%AF%D9%86_%D8%A7%D8%B1%D8%A7%D8%A6%D9%87_%D8%AF%D9%87%D9%86%D8%AF%D9%87_%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1_Github\" >\u0627\u0641\u0632\u0648\u062f\u0646 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0627\u0639\u062a\u0628\u0627\u0631 Github<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/session-state-management-js-react-49fg\/#%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DB%8C%DA%A9_%D8%A7%D8%B1%D8%A7%D8%A6%D9%87_%D8%AF%D9%87%D9%86%D8%AF%D9%87_%D8%AC%D9%84%D8%B3%D9%87_%D8%A8%D8%B1%D8%A7%DB%8C_%DA%A9%D9%84_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87\" >\u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u062c\u0644\u0633\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0644 \u0628\u0631\u0646\u0627\u0645\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/session-state-management-js-react-49fg\/#%D8%A8%D8%B3%D8%AA%D9%87_%D8%A8%D9%86%D8%AF%DB%8C_Layout_%D8%A8%D8%A7_SessionWrapper\" >\u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc Layout \u0628\u0627 SessionWrapper<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/session-state-management-js-react-49fg\/#%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C_%D8%A8%D9%87_%D8%AF%D8%A7%D8%AF%D9%87_%D9%87%D8%A7_%D9%88_%D9%88%D8%B6%D8%B9%DB%8C%D8%AA_%D8%AC%D9%84%D8%B3%D9%87\" >\u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0648 \u0648\u0636\u0639\u06cc\u062a \u062c\u0644\u0633\u0647<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/session-state-management-js-react-49fg\/#%D9%87%DB%8C%D8%AF%D8%B1%D8%A7%D8%AA%D8%A7%D8%B3%DB%8C%D9%88%D9%86_%D8%AD%D8%A7%D9%84%D8%AA\" >\u0647\u06cc\u062f\u0631\u0627\u062a\u0627\u0633\u06cc\u0648\u0646 \u062d\u0627\u0644\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/nabfollower.com\/blog\/session-state-management-js-react-49fg\/#%D9%85%D9%86%D8%A7%D8%A8%D8%B9\" >\u0645\u0646\u0627\u0628\u0639<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D9%82%D8%AF%D9%85%D9%87\"><\/span>\n<p>  \u0645\u0642\u062f\u0645\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0644\u0633\u0647 \u0645\u0633\u0626\u0648\u0644 \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062e\u0627\u0635 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u0686\u0646\u062f\u06cc\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06cc\u0627 \u062a\u0639\u0627\u0645\u0644 \u0628\u0627 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628 \u0627\u0633\u062a. \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0648\u0628\u060c \u00ab\u062c\u0644\u0633\u0647\u00bb \u0628\u0647 \u062f\u0648\u0631\u0647\u200c\u0627\u06cc \u0627\u0637\u0644\u0627\u0642 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u062f\u0631 \u0637\u06cc \u0622\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647 \u0637\u0648\u0631 \u0641\u0639\u0627\u0644 \u0628\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u062a\u0639\u0627\u0645\u0644 \u062f\u0627\u0631\u062f\u060c \u0627\u0632 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0648\u0627\u0631\u062f \u0633\u06cc\u0633\u062a\u0645 \u0645\u06cc\u200c\u0634\u0648\u062f \u0634\u0631\u0648\u0639 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0627\u0648 \u0627\u0632 \u0633\u06cc\u0633\u062a\u0645 \u062e\u0627\u0631\u062c \u0645\u06cc\u200c\u0634\u0648\u062f \u06cc\u0627 \u067e\u0633 \u0627\u0632 \u0645\u062f\u062a\u06cc \u0639\u062f\u0645 \u0641\u0639\u0627\u0644\u06cc\u062a \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u0645\u06cc\u200c\u0631\u0633\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D9%86%D9%88%D8%A7%D8%B9_%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA_%D8%AC%D9%84%D8%B3%D8%A7%D8%AA\"><\/span>\n<p>  \u0627\u0646\u0648\u0627\u0639 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0644\u0633\u0627\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>\n<p><strong>\u06a9\u0648\u06a9\u06cc \u0647\u0627<\/strong>: \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u06a9\u0648\u0686\u06a9 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631.<\/p>\n<\/li>\n<li>\n<p><strong>\u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u062d\u0644\u06cc\/\u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u062c\u0644\u0633\u0647<\/strong>: \u0631\u0648\u0634 \u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0648\u0628 \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631.<\/p>\n<\/li>\n<li>\n<p><strong>JWT (JSON Web Tokens)<\/strong>: \u0631\u0648\u0634\u06cc \u0628\u062f\u0648\u0646 \u062d\u0627\u0644\u062a \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0644\u0633\u0627\u062a \u0628\u0627 \u062a\u0648\u06a9\u0646 \u0647\u0627\u06cc \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647.<\/p>\n<\/li>\n<li>\n<p><strong>\u0641\u0631\u0648\u0634\u06af\u0627\u0647 \u0647\u0627\u06cc \u062c\u0644\u0633\u0647 \u0633\u0645\u062a \u0633\u0631\u0648\u0631<\/strong>: \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0646\u0634\u0633\u062a \u062f\u0627\u0626\u0645\u06cc \u062f\u0631 \u0633\u0631\u0648\u0631\u06cc \u06a9\u0647 \u062c\u0644\u0633\u0627\u062a \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0631\u062f\u06cc\u0627\u0628\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA_%D8%AC%D9%84%D8%B3%D8%A7%D8%AA_%D8%A8%D8%A7_%D8%AC%D8%A7%D9%88%D8%A7_%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA_%D9%88_React\"><\/span>\n<p>  \u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0644\u0633\u0627\u062a \u0628\u0627 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0648 React<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"%DA%A9%D9%88%DA%A9%DB%8C_%D9%87%D8%A7\"><\/span>\n<p>  \u06a9\u0648\u06a9\u06cc \u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u06a9\u0648\u06a9\u06cc\u200c\u0647\u0627 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u0648 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f \u062a\u0627 \u067e\u0633 \u0627\u0632 \u06cc\u06a9 \u0632\u0645\u0627\u0646 \u062e\u0627\u0635 \u0645\u0646\u0642\u0636\u06cc \u0634\u0648\u0646\u062f. \u0622\u0646\u0647\u0627 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0644\u0633\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f \u0632\u06cc\u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0627 \u067e\u0627\u0633\u062e \u0647\u0627\u06cc \u0633\u0631\u0648\u0631 \u062a\u0646\u0638\u06cc\u0645 \u0634\u0648\u0646\u062f \u0648 \u0628\u0627 \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0647 \u0633\u0631\u0648\u0631 \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u0631\u0633\u0627\u0644 \u0634\u0648\u0646\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ Setting a cookie<\/span>\n<span class=\"nb\">document<\/span><span class=\"p\">.<\/span><span class=\"nx\">cookie<\/span> <span class=\"o\">=<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">sessionId=9808@#45; expires=Fri, 31 Dec 2024 23:59:59 GMT; path=\/login<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"c1\">\/\/ Reading a cookie<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">cookies<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">cookieValue<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n   <span class=\"k\">return<\/span> <span class=\"nx\">cookieValue<\/span><span class=\"p\">.<\/span><span class=\"nf\">split<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">; <\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nf\">reduce<\/span><span class=\"p\">((<\/span><span class=\"nx\">acc<\/span><span class=\"p\">,<\/span> <span class=\"nx\">cookie<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">key<\/span><span class=\"p\">,<\/span> <span class=\"nx\">value<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">cookie<\/span><span class=\"p\">.<\/span><span class=\"nf\">split<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">=<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">acc<\/span><span class=\"p\">[<\/span><span class=\"nx\">key<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">value<\/span><span class=\"p\">;<\/span>\n    <span class=\"k\">return<\/span> <span class=\"nx\">acc<\/span><span class=\"p\">;<\/span>\n   <span class=\"p\">},<\/span> <span class=\"p\">{});<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">cookieObj<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">cookies<\/span><span class=\"p\">(<\/span><span class=\"nx\">cookie<\/span><span class=\"p\">)<\/span>\n\n<span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"nx\">cookieObj<\/span><span class=\"p\">.<\/span><span class=\"nx\">sessionId<\/span><span class=\"p\">)<\/span> <span class=\"c1\">\/\/ 9808@#45<\/span>\n<span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"nx\">cookieObj<\/span><span class=\"p\">.<\/span><span class=\"nx\">expires<\/span><span class=\"p\">)<\/span> <span class=\"c1\">\/\/ Fri, 31 Dec 2024 23:59:59 GMT<\/span>\n<span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"nx\">cookieObj<\/span><span class=\"p\">.<\/span><span class=\"nx\">path<\/span><span class=\"p\">)<\/span> <span class=\"c1\">\/\/ \/login<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D9%85%D8%AD%D9%84%DB%8C_%D9%88_%D8%AC%D9%84%D8%B3%D9%87\"><\/span>\n<p>  \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0645\u062d\u0644\u06cc \u0648 \u062c\u0644\u0633\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>\n<p>localStorage \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u062f\u0631 \u062c\u0644\u0633\u0627\u062a \u0645\u0631\u0648\u0631\u06af\u0631 \u062d\u0641\u0638 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p>sessionStorage \u0641\u0642\u0637 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u062f\u062a \u062c\u0644\u0633\u0647 \u0635\u0641\u062d\u0647 (\u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0628\u0631\u06af\u0647 \u06cc\u0627 \u067e\u0646\u062c\u0631\u0647 \u0628\u0633\u062a\u0647 \u0634\u0648\u062f) \u062d\u0641\u0638 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ React Example<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">React<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">react<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useState<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">react<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useEffect<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">react<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">Hero<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ Accessing theme from localStorage for initial state<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">theme<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setTheme<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useState<\/span><span class=\"p\">(<\/span>\n    <span class=\"nx\">localStorage<\/span><span class=\"p\">.<\/span><span class=\"nf\">getItem<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">theme<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)<\/span> <span class=\"o\">===<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">dark<\/span><span class=\"dl\">\"<\/span> <span class=\"p\">?<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">dark<\/span><span class=\"dl\">\"<\/span> <span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">light<\/span><span class=\"dl\">\"<\/span>\n  <span class=\"p\">);<\/span>\n\n  <span class=\"nf\">useEffect<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ Updating local storage if theme state is changed<\/span>\n    <span class=\"nx\">localStorage<\/span><span class=\"p\">.<\/span><span class=\"nf\">setItem<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">theme<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">theme<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">},<\/span> <span class=\"p\">[<\/span><span class=\"nx\">theme<\/span><span class=\"p\">]);<\/span>\n\n  <span class=\"c1\">\/\/ Toggling theme between dark and light<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">toggleTheme<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nf\">setTheme<\/span><span class=\"p\">(<\/span><span class=\"nx\">theme<\/span> <span class=\"o\">===<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">dark<\/span><span class=\"dl\">\"<\/span> <span class=\"p\">?<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">light<\/span><span class=\"dl\">\"<\/span> <span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">dark<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">};<\/span>\n\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"o\">&lt;<\/span><span class=\"nx\">section<\/span> <span class=\"nx\">className<\/span><span class=\"o\">=<\/span><span class=\"p\">{<\/span><span class=\"s2\">`<\/span><span class=\"p\">${<\/span><span class=\"nx\">theme<\/span> <span class=\"o\">===<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">dark<\/span><span class=\"dl\">\"<\/span> <span class=\"p\">?<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">bg-gray-900<\/span><span class=\"dl\">\"<\/span> <span class=\"p\">:<\/span> <span class=\"dl\">\"\"<\/span><span class=\"p\">}<\/span><span class=\"s2\">  text-white`<\/span><span class=\"p\">}<\/span><span class=\"o\">&gt;<\/span>\n      <span class=\"o\">&lt;<\/span><span class=\"nx\">div<\/span> <span class=\"nx\">className<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">mx-auto px-4 py-32 lg:flex lg:h-screen lg:items-center lg:justify-between max-w-[1200px]<\/span><span class=\"dl\">\"<\/span><span class=\"o\">&gt;<\/span>\n        <span class=\"o\">&lt;<\/span><span class=\"nx\">h1<\/span><span class=\"o\">&gt;<\/span><span class=\"nx\">Theme<\/span> <span class=\"nx\">Change<\/span> <span class=\"nx\">Example<\/span><span class=\"o\">&lt;<\/span><span class=\"sr\">\/h1<\/span><span class=\"err\">&gt;\n<\/span>        <span class=\"o\">&lt;<\/span><span class=\"nx\">button<\/span>\n          <span class=\"nx\">className<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">fixed top-4 right-4 rounded bg-blue-600 p-2 text-white hover:bg-transparent hover:text-white focus:outline-none focus:ring<\/span><span class=\"dl\">\"<\/span>\n          <span class=\"nx\">onClick<\/span><span class=\"o\">=<\/span><span class=\"p\">{<\/span><span class=\"nx\">toggleTheme<\/span><span class=\"p\">}<\/span>\n        <span class=\"o\">&gt;<\/span>\n          <span class=\"p\">{<\/span><span class=\"nx\">theme<\/span> <span class=\"o\">===<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">dark<\/span><span class=\"dl\">\"<\/span> <span class=\"p\">?<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\"> <\/span><span class=\"dl\">\"<\/span> <span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\"> <\/span><span class=\"dl\">\"<\/span><span class=\"p\">}<\/span>\n        <span class=\"o\">&lt;<\/span><span class=\"sr\">\/button<\/span><span class=\"err\">&gt;\n<\/span>      <span class=\"o\">&lt;<\/span><span class=\"sr\">\/div<\/span><span class=\"err\">&gt;\n<\/span>    <span class=\"o\">&lt;<\/span><span class=\"sr\">\/section<\/span><span class=\"err\">&gt;\n<\/span>  <span class=\"p\">);<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"nx\">Hero<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D8%AD%D8%B1%D8%A7%D8%B2_%D9%87%D9%88%DB%8C%D8%AA_JWT\"><\/span>\n<p>  \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a JWT<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a JWT \u06cc\u06a9 \u0645\u06a9\u0627\u0646\u06cc\u0633\u0645 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u062f\u0648\u0646 \u062d\u0627\u0644\u062a \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u062a\u0648\u06a9\u0646 \u0627\u0633\u062a.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ Manually setting tokens for login<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">login<\/span> <span class=\"o\">=<\/span> <span class=\"k\">async <\/span><span class=\"p\">(<\/span><span class=\"nx\">username<\/span><span class=\"p\">,<\/span> <span class=\"nx\">password<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">response<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nf\">fetch<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">https:\/\/example.com\/api\/login<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span>\n    <span class=\"na\">method<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">POST<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n    <span class=\"na\">headers<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n      <span class=\"dl\">'<\/span><span class=\"s1\">Content-Type<\/span><span class=\"dl\">'<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">application\/json<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">},<\/span>\n    <span class=\"na\">body<\/span><span class=\"p\">:<\/span> <span class=\"nx\">JSON<\/span><span class=\"p\">.<\/span><span class=\"nf\">stringify<\/span><span class=\"p\">({<\/span> <span class=\"nx\">username<\/span><span class=\"p\">,<\/span> <span class=\"nx\">password<\/span> <span class=\"p\">}),<\/span>\n  <span class=\"p\">});<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">data<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">response<\/span><span class=\"p\">.<\/span><span class=\"nf\">json<\/span><span class=\"p\">();<\/span>\n  <span class=\"nx\">localStorage<\/span><span class=\"p\">.<\/span><span class=\"nf\">setItem<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">token<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">data<\/span><span class=\"p\">.<\/span><span class=\"nx\">token<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"c1\">\/\/ Checking tokens with Authorization headers<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">getProtectedData<\/span> <span class=\"o\">=<\/span> <span class=\"k\">async <\/span><span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">token<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">localStorage<\/span><span class=\"p\">.<\/span><span class=\"nf\">getItem<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">token<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">response<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nf\">fetch<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">https:\/\/example.com\/api\/protected<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span>\n    <span class=\"na\">method<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">GET<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n    <span class=\"na\">headers<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n      <span class=\"dl\">'<\/span><span class=\"s1\">Authorization<\/span><span class=\"dl\">'<\/span><span class=\"p\">:<\/span> <span class=\"s2\">`Bearer <\/span><span class=\"p\">${<\/span><span class=\"nx\">token<\/span><span class=\"p\">}<\/span><span class=\"s2\">`<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">},<\/span>\n  <span class=\"p\">});<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">protectedData<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">response<\/span><span class=\"p\">.<\/span><span class=\"nf\">json<\/span><span class=\"p\">();<\/span>\n  <span class=\"k\">return<\/span> <span class=\"nx\">protectedData<\/span>\n<span class=\"p\">};<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>\n<p>\u0647\u0646\u06af\u0627\u0645 \u0648\u0631\u0648\u062f\u060c \u0633\u0631\u0648\u0631 \u06cc\u06a9 JWT \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u0634\u062a\u0631\u06cc \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p>\u0645\u0634\u062a\u0631\u06cc JWT \u0631\u0627 \u062f\u0631 localStorage \u06cc\u0627 sessionStorage \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p>\u062f\u0631 \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0647 \u06cc\u06a9 \u0645\u0646\u0628\u0639 \u0645\u062d\u0627\u0641\u0638\u062a \u0634\u062f\u0647\u060c \u0645\u0634\u062a\u0631\u06cc JWT \u0631\u0627 \u062f\u0631 \u0647\u062f\u0631\u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p>\u0645\u0646\u0628\u0639 &#8211; https:\/\/www.npmjs.com\/package\/react-jwt <\/p>\n<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA_%D8%AC%D9%84%D8%B3%D9%87_%D8%AF%D8%B1_Nextjs\"><\/span>\n<p>  \u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0644\u0633\u0647 \u062f\u0631 Next.js<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0644\u0633\u0647 \u062f\u0631 Next.js \u0628\u0647 \u062f\u0644\u06cc\u0644 \u062a\u0631\u06a9\u06cc\u0628 \u0632\u0645\u06cc\u0646\u0647 \u0647\u0627\u06cc \u06a9\u0644\u0627\u06cc\u0646\u062a \u0648 \u0633\u0631\u0648\u0631 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0642\u0648\u06cc \u062a\u0631 \u0628\u0627\u0634\u062f. \u0631\u0648\u0634 \u0647\u0627\u06cc \u0645\u062a\u062f\u0627\u0648\u0644 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0644\u0633\u0627\u062a \u062f\u0631 Next.js \u0634\u0627\u0645\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u0648\u06a9\u06cc \u0647\u0627\u060c JWT \u0647\u0627 \u0648 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0634\u062e\u0635 \u062b\u0627\u0644\u062b \u0627\u0633\u062a. \u0645\u0627 \u0642\u0628\u0644\u0627 \u0631\u0648\u06cc\u06a9\u0631\u062f \u06a9\u0648\u06a9\u06cc\u200c\u0647\u0627 \u0648 JWT \u0631\u0627 \u062f\u06cc\u062f\u0647\u200c\u0627\u06cc\u0645 \u0648 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0634\u062e\u0635 \u062b\u0627\u0644\u062b \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 next-auth\u060c \u06a9\u0647 \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0645\u062d\u0628\u0648\u0628 \u0628\u0631\u0627\u06cc Next.js \u0627\u0633\u062a \u06a9\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0644\u0633\u0647 \u0631\u0627 \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<ul>\n<li>\n<p><strong>\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062c\u0644\u0633\u0647<\/strong>: \u062c\u0644\u0633\u0627\u062a \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u062f\u0631 JWT (\u0628\u0631\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u062f\u0648\u0646 \u062d\u0627\u0644\u062a) \u06cc\u0627 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>\u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u062c\u0644\u0633\u0627\u062a<\/strong>: Next-auth \u0627\u0646\u0642\u0636\u0627\u060c \u062a\u0645\u062f\u06cc\u062f \u0648 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062c\u0644\u0633\u0647 \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%D9%86%D8%B5%D8%A8_%D9%88_%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C\"><\/span>\n<p>  \u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>npm install next-auth\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D9%81%D8%B2%D9%88%D8%AF%D9%86_%D8%A7%D8%B1%D8%A7%D8%A6%D9%87_%D8%AF%D9%87%D9%86%D8%AF%D9%87_%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1_Github\"><\/span>\n<p>  \u0627\u0641\u0632\u0648\u062f\u0646 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0627\u0639\u062a\u0628\u0627\u0631 Github<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"k\">import<\/span> <span class=\"nx\">NextAuth<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">next-auth<\/span><span class=\"dl\">\"<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">GithubProvider<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">next-auth\/providers\/github<\/span><span class=\"dl\">\"<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"kd\">const<\/span> <span class=\"nx\">authOptions<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ Configure one or more authentication providers<\/span>\n  <span class=\"na\">providers<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\n    <span class=\"nc\">GithubProvider<\/span><span class=\"p\">({<\/span>\n      <span class=\"na\">clientId<\/span><span class=\"p\">:<\/span> <span class=\"nx\">process<\/span><span class=\"p\">.<\/span><span class=\"nx\">env<\/span><span class=\"p\">.<\/span><span class=\"nx\">GITHUB_ID<\/span><span class=\"p\">,<\/span>\n      <span class=\"na\">clientSecret<\/span><span class=\"p\">:<\/span> <span class=\"nx\">process<\/span><span class=\"p\">.<\/span><span class=\"nx\">env<\/span><span class=\"p\">.<\/span><span class=\"nx\">GITHUB_SECRET<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">}),<\/span>\n  <span class=\"p\">],<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">handler<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">NextAuth<\/span><span class=\"p\">(<\/span><span class=\"nx\">authOptions<\/span><span class=\"p\">)<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">handler<\/span> <span class=\"k\">as<\/span> <span class=\"nx\">GET<\/span><span class=\"p\">,<\/span> <span class=\"nx\">handler<\/span> <span class=\"k\">as<\/span> <span class=\"nx\">POST<\/span> <span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DB%8C%DA%A9_%D8%A7%D8%B1%D8%A7%D8%A6%D9%87_%D8%AF%D9%87%D9%86%D8%AF%D9%87_%D8%AC%D9%84%D8%B3%D9%87_%D8%A8%D8%B1%D8%A7%DB%8C_%DA%A9%D9%84_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87\"><\/span>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u062c\u0644\u0633\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0644 \u0628\u0631\u0646\u0627\u0645\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"dl\">\"<\/span><span class=\"s2\">use client<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">SessionProvider<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">next-auth\/react<\/span><span class=\"dl\">\"<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">React<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">react<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">SessionWrapper<\/span> <span class=\"o\">=<\/span> <span class=\"p\">({<\/span><span class=\"nx\">children<\/span><span class=\"p\">}:{<\/span><span class=\"nl\">children<\/span><span class=\"p\">:<\/span><span class=\"nx\">React<\/span><span class=\"p\">.<\/span><span class=\"nx\">ReactNode<\/span><span class=\"p\">})<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">return<\/span> <span class=\"o\">&lt;<\/span><span class=\"nx\">SessionProvider<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">{<\/span><span class=\"nx\">children<\/span><span class=\"p\">}<\/span><span class=\"o\">&lt;<\/span><span class=\"sr\">\/SessionProvider<\/span><span class=\"err\">&gt;\n<\/span><span class=\"p\">}<\/span>\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"nx\">SessionWrapper<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A8%D8%B3%D8%AA%D9%87_%D8%A8%D9%86%D8%AF%DB%8C_Layout_%D8%A8%D8%A7_SessionWrapper\"><\/span>\n<p>  \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc Layout \u0628\u0627 SessionWrapper<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"k\">import<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">.\/globals.css<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">Navbar<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@\/components\/Navbar<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">Footer<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@\/components\/Footer<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">SessionWrapper<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@\/components\/SessionWrapper<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">RootLayout<\/span><span class=\"p\">({<\/span>\n  <span class=\"nx\">children<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">}:<\/span> <span class=\"nx\">Readonly<\/span><span class=\"o\">&lt;<\/span><span class=\"p\">{<\/span>\n  <span class=\"na\">children<\/span><span class=\"p\">:<\/span> <span class=\"nx\">React<\/span><span class=\"p\">.<\/span><span class=\"nx\">ReactNode<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"o\">&lt;<\/span><span class=\"nx\">html<\/span> <span class=\"nx\">lang<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">en<\/span><span class=\"dl\">\"<\/span><span class=\"o\">&gt;<\/span>\n      <span class=\"o\">&lt;<\/span><span class=\"nx\">body<\/span><span class=\"o\">&gt;<\/span>\n        <span class=\"o\">&lt;<\/span><span class=\"nx\">SessionWrapper<\/span><span class=\"o\">&gt;<\/span>\n          <span class=\"o\">&lt;<\/span><span class=\"nx\">Navbar<\/span> <span class=\"o\">\/&gt;<\/span>\n            <span class=\"o\">&lt;<\/span><span class=\"nx\">main<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">{<\/span><span class=\"nx\">children<\/span><span class=\"p\">}<\/span><span class=\"o\">&lt;<\/span><span class=\"sr\">\/main<\/span><span class=\"err\">&gt;\n<\/span>          <span class=\"o\">&lt;<\/span><span class=\"nx\">Footer<\/span> <span class=\"o\">\/&gt;<\/span>\n        <span class=\"o\">&lt;<\/span><span class=\"sr\">\/SessionWrapper<\/span><span class=\"err\">&gt;\n<\/span>      <span class=\"o\">&lt;<\/span><span class=\"sr\">\/body<\/span><span class=\"err\">&gt;\n<\/span>    <span class=\"o\">&lt;<\/span><span class=\"sr\">\/html<\/span><span class=\"err\">&gt;\n<\/span>  <span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C_%D8%A8%D9%87_%D8%AF%D8%A7%D8%AF%D9%87_%D9%87%D8%A7_%D9%88_%D9%88%D8%B6%D8%B9%DB%8C%D8%AA_%D8%AC%D9%84%D8%B3%D9%87\"><\/span>\n<p>  \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0648 \u0648\u0636\u0639\u06cc\u062a \u062c\u0644\u0633\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useSession<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">next-auth\/react<\/span><span class=\"dl\">\"<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">Component<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"p\">{<\/span> <span class=\"na\">data<\/span><span class=\"p\">:<\/span> <span class=\"nx\">session<\/span><span class=\"p\">,<\/span> <span class=\"nx\">status<\/span> <span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useSession<\/span><span class=\"p\">()<\/span>\n\n  <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">status<\/span> <span class=\"o\">===<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">authenticated<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">return<\/span> <span class=\"o\">&lt;<\/span><span class=\"nx\">p<\/span><span class=\"o\">&gt;<\/span><span class=\"nx\">Signed<\/span> <span class=\"k\">in<\/span> <span class=\"k\">as<\/span> <span class=\"p\">{<\/span><span class=\"nx\">session<\/span><span class=\"p\">.<\/span><span class=\"nx\">user<\/span><span class=\"p\">.<\/span><span class=\"nx\">email<\/span><span class=\"p\">}<\/span><span class=\"o\">&lt;<\/span><span class=\"sr\">\/p<\/span><span class=\"err\">&gt;\n<\/span>  <span class=\"p\">}<\/span>\n\n  <span class=\"k\">return<\/span> <span class=\"o\">&lt;<\/span><span class=\"nx\">a<\/span> <span class=\"nx\">href<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">\/api\/auth\/signin<\/span><span class=\"dl\">\"<\/span><span class=\"o\">&gt;<\/span><span class=\"nx\">Sign<\/span> <span class=\"k\">in<\/span><span class=\"o\">&lt;<\/span><span class=\"sr\">\/a<\/span><span class=\"err\">&gt;\n<\/span><span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>\n<p>\u062f\u0627\u062f\u0647: \u0627\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0633\u0647 \u0645\u0642\u062f\u0627\u0631 \u0628\u0627\u0634\u062f: Session \/ undefined \/ null.<\/p>\n<\/li>\n<li>\n<p>\u0648\u0642\u062a\u06cc \u062c\u0644\u0633\u0647 \u0647\u0646\u0648\u0632 \u0648\u0627\u06a9\u0634\u06cc \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u062f\u0627\u062f\u0647 \u0647\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0646\u0634\u062f\u0647 \u062e\u0648\u0627\u0647\u0646\u062f \u0628\u0648\u062f<\/p>\n<\/li>\n<li>\n<p>\u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0646\u062a\u0648\u0627\u0646\u062f \u062c\u0644\u0633\u0647 \u0631\u0627 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u06a9\u0646\u062f\u060c \u062f\u0627\u062f\u0647 \u0647\u0627 \u067e\u0648\u0686 \u062e\u0648\u0627\u0647\u0646\u062f \u0628\u0648\u062f<\/p>\n<\/li>\n<li>\n<p>\u062f\u0631 \u0635\u0648\u0631\u062a \u0645\u0648\u0641\u0642\u06cc\u062a\u060c \u062f\u0627\u062f\u0647 \u0647\u0627 Session \u062e\u0648\u0627\u0647\u0646\u062f \u0634\u062f.<\/p>\n<\/li>\n<li>\n<p>\u0648\u0636\u0639\u06cc\u062a: \u0646\u06af\u0627\u0634\u062a enum \u0628\u0647 \u0633\u0647 \u062d\u0627\u0644\u062a \u062c\u0644\u0633\u0647 \u0645\u0645\u06a9\u0646: &#8220;\u0628\u0627\u0631\u06af\u06cc\u0631\u06cc&#8221; | &#8220;\u062a\u0623\u06cc\u06cc\u062f \u0634\u062f\u0647&#8221; | &#8220;\u063a\u06cc\u0631 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a&#8221;<\/p>\n<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D9%87%DB%8C%D8%AF%D8%B1%D8%A7%D8%AA%D8%A7%D8%B3%DB%8C%D9%88%D9%86_%D8%AD%D8%A7%D9%84%D8%AA\"><\/span>\n<p>  \u0647\u06cc\u062f\u0631\u0627\u062a\u0627\u0633\u06cc\u0648\u0646 \u062d\u0627\u0644\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>\n<p>Hydration \u0641\u0631\u0622\u06cc\u0646\u062f\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0622\u0646 HTML \u0631\u0646\u062f\u0631 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u0633\u0631\u0648\u0631 \u062a\u0648\u0633\u0637 React \u0628\u0631 \u0631\u0648\u06cc \u06a9\u0644\u0627\u06cc\u0646\u062a &#8220;\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f&#8221; \u0645\u06cc \u0634\u0648\u062f \u0648 React \u0645\u0646\u0637\u0642 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062e\u0648\u062f \u0631\u0627 (\u0645\u062b\u0644\u0627\u064b \u0634\u0646\u0648\u0646\u062f\u06af\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f\u060c \u0645\u062f\u06cc\u0631\u06cc\u062a \u062d\u0627\u0644\u062a) \u0628\u0647 HTML \u0645\u0648\u062c\u0648\u062f \u0645\u062a\u0635\u0644 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p>\u062f\u0631 Next.js\u060c \u0647\u06cc\u062f\u0631\u0627\u062a\u0627\u0633\u06cc\u0648\u0646 \u062d\u0627\u0644\u062a \u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0635\u0641\u062d\u0647 \u0627\u06cc \u062a\u0648\u0633\u0637 \u0633\u0631\u0648\u0631 \u0631\u0646\u062f\u0631 \u0645\u06cc \u0634\u0648\u062f\u060c \u0627\u0632 \u0642\u0628\u0644 \u0628\u0627 HTML \u0648 \u0628\u0631\u062e\u06cc \u0627\u0632 \u062d\u0627\u0644\u062a \u0647\u0627\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0631\u0646\u062f\u0631 \u0645\u06cc \u0634\u0648\u062f\u060c \u0627\u0645\u0627 \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0645\u0631\u0648\u0631\u06af\u0631 \u06a9\u0646\u062a\u0631\u0644 \u0631\u0627 \u0628\u0647 \u062f\u0633\u062a \u06af\u0631\u0641\u062a\u060c \u0628\u0631\u0646\u0627\u0645\u0647 React \u0633\u0645\u062a \u06a9\u0644\u0627\u06cc\u0646\u062a \u0628\u0627\u06cc\u062f \u0622\u0646 HTML \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u0633\u0631\u0648\u0631 \u0631\u0627 \u0628\u06af\u06cc\u0631\u062f \u0648 \u0628\u0627 \u067e\u06cc\u0648\u0633\u062a \u06a9\u0631\u062f\u0646 \u0634\u0646\u0648\u0646\u062f\u06af\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f\u060c \u0634\u0631\u0648\u0639 \u0645\u062c\u062f\u062f \u062d\u0627\u0644\u062a\u060c \u0648 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0633\u0645\u062a \u0633\u0631\u0648\u06cc\u0633 \u06af\u06cc\u0631\u0646\u062f\u0647 \u0628\u0627 HTML \u0627\u0632 \u067e\u06cc\u0634 \u0631\u0646\u062f\u0631 \u0634\u062f\u0647 \u062f\u0631\u0633\u062a \u0631\u0641\u062a\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0622\u0646 \u0631\u0627 &#8220;\u0647\u06cc\u062f\u0631\u0627\u062a\u0647&#8221; \u06a9\u0646\u06cc\u062f.<\/p>\n<\/li>\n<li>\n<p>\u0627\u06af\u0631 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627 \u0628\u0647 \u062d\u0627\u0644\u062a \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0648\u0627\u0628\u0633\u062a\u0647 \u0628\u0627\u0634\u0646\u062f\u060c \u0647\u06cc\u062f\u0631\u0627\u062a\u0627\u0633\u06cc\u0648\u0646 \u0646\u06cc\u0632 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0631\u062e \u062f\u0647\u062f.<\/p>\n<\/li>\n<li>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a<\/p>\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"dl\">\"<\/span><span class=\"s2\">use client<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">ProfileCard<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">.\/ProfileCard<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">BlogsFetch<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">.\/BlogsFetch<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useMarkdownStore<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@\/store\/useStore<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">ProfileSection<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">user<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useMarkdownStore<\/span><span class=\"p\">((<\/span><span class=\"nx\">state<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">state<\/span><span class=\"p\">.<\/span><span class=\"nx\">user<\/span><span class=\"p\">);<\/span>\n\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"o\">&lt;<\/span><span class=\"nx\">div<\/span> <span class=\"nx\">className<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">flex flex-col lg:flex-row justify-center lg:justify-start gap-5 lg:gap-10 px-5<\/span><span class=\"dl\">\"<\/span><span class=\"o\">&gt;<\/span>\n      <span class=\"o\">&lt;<\/span><span class=\"nx\">ProfileCard<\/span> <span class=\"nx\">user<\/span><span class=\"o\">=<\/span><span class=\"p\">{<\/span><span class=\"nx\">user<\/span><span class=\"p\">}<\/span> <span class=\"sr\">\/<\/span><span class=\"err\">&gt;\n<\/span>      <span class=\"o\">&lt;<\/span><span class=\"nx\">BlogsFetch<\/span> <span class=\"nx\">userId<\/span><span class=\"o\">=<\/span><span class=\"p\">{<\/span><span class=\"nx\">user<\/span><span class=\"p\">.<\/span><span class=\"nx\">uid<\/span> <span class=\"k\">as<\/span> <span class=\"nx\">string<\/span><span class=\"p\">}<\/span> <span class=\"sr\">\/<\/span><span class=\"err\">&gt;\n<\/span>    <span class=\"o\">&lt;<\/span><span class=\"sr\">\/div<\/span><span class=\"err\">&gt;\n<\/span>  <span class=\"p\">);<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"nx\">ProfileSection<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>\n<p>\u0645\u062a\u063a\u06cc\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647 \u0648\u0636\u0639\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631 \u0627\u0632 zustand \u0627\u0634\u0627\u0631\u0647 \u062f\u0627\u0631\u062f \u06a9\u0647 \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0648\u0644\u062a\u06cc \u0627\u0633\u062a. \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u0646\u0627\u0647\u0645\u06af\u0627\u0645 \u0627\u0633\u062a \u0648 \u062a\u0648\u0633\u0637 \u0645\u0624\u0644\u0641\u0647 BlogsFetch \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u0627\u0632 \u0627\u06cc\u0646 user.uid \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0627\u0645\u0627 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0648\u0642\u062a\u06cc \u0645\u0624\u0644\u0641\u0647 \u0646\u0635\u0628 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u06a9\u0627\u0631\u0628\u0631 null \u0631\u0627 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f \u0648 \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u06cc\u06a9 \u0622\u0631\u0627\u06cc\u0647 \u062e\u0627\u0644\u06cc \u0631\u0627 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f \u0632\u06cc\u0631\u0627 \u0648\u0636\u0639\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631 \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0647\u06cc\u062f\u0631\u0627\u062a\u0647 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<\/li>\n<li>\n<p>\u0628\u0631\u0627\u06cc \u0631\u0641\u0639 \u0627\u06cc\u0646 \u0645\u0634\u06a9\u0644\u060c \u0628\u0627\u06cc\u062f \u0645\u0646\u062a\u0638\u0631 \u0628\u0645\u0627\u0646\u06cc\u0645 \u062a\u0627 \u0648\u0636\u0639\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631 \u0628\u0627 \u0645\u0642\u062f\u0627\u0631\u06cc \u0647\u06cc\u062f\u0631\u0627\u062a\u0647 \u0634\u0648\u062f \u0648 \u0633\u067e\u0633 \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645.<\/p>\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">queryInfinite<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useInfiniteQuery<\/span><span class=\"p\">({<\/span>\n  <span class=\"na\">queryKey<\/span><span class=\"p\">:<\/span> <span class=\"nx\">userId<\/span> <span class=\"p\">?<\/span> <span class=\"p\">[<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">blogs<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">userId<\/span><span class=\"p\">]<\/span> <span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">blogs<\/span><span class=\"dl\">\"<\/span><span class=\"p\">],<\/span>\n  <span class=\"na\">queryFn<\/span><span class=\"p\">:<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span>\n    <span class=\"nx\">userId<\/span>\n      <span class=\"p\">?<\/span> <span class=\"nf\">getUserBlogsFromDb<\/span><span class=\"p\">(<\/span><span class=\"nx\">userId<\/span><span class=\"p\">,<\/span> <span class=\"nx\">lastDoc<\/span><span class=\"p\">)<\/span>\n      <span class=\"p\">:<\/span> <span class=\"nf\">getBlogsFromDb<\/span><span class=\"p\">(<\/span><span class=\"nx\">filters<\/span><span class=\"p\">,<\/span> <span class=\"nx\">lastDoc<\/span><span class=\"p\">),<\/span>\n  <span class=\"na\">initialPageParam<\/span><span class=\"p\">:<\/span> <span class=\"kc\">undefined<\/span><span class=\"p\">,<\/span>\n  <span class=\"na\">getPreviousPageParam<\/span><span class=\"p\">:<\/span> <span class=\"p\">(<\/span><span class=\"nx\">firstPage<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">firstPage<\/span><span class=\"p\">.<\/span><span class=\"nx\">firstVisibleDoc<\/span><span class=\"p\">,<\/span>\n  <span class=\"na\">getNextPageParam<\/span><span class=\"p\">:<\/span> <span class=\"p\">(<\/span><span class=\"nx\">lastPage<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">lastPage<\/span><span class=\"p\">.<\/span><span class=\"nx\">lastVisibleDoc<\/span><span class=\"p\">,<\/span>\n  <span class=\"na\">enabled<\/span><span class=\"p\">:<\/span> <span class=\"nx\">userId<\/span> <span class=\"p\">?<\/span> <span class=\"kc\">true<\/span> <span class=\"p\">:<\/span> <span class=\"kc\">false<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>\u0645\u0627 \u0627\u0632 react query \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627 \u0648 \u062c\u0647\u0634 \u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0627\u06cc\u0646 1 \u0648\u06cc\u0698\u06af\u06cc \u0628\u0647 \u0646\u0627\u0645 enabled \u062f\u0627\u0631\u062f \u06a9\u0647 \u067e\u0633 \u0627\u0632 \u0622\u0645\u0627\u062f\u0647 \u0634\u062f\u0646 \u0648 \u0647\u06cc\u062f\u0631\u0627\u062a\u0647 \u0634\u062f\u0646 \u062d\u0627\u0644\u062a userId \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0648\u0627\u06a9\u0634\u06cc \u0645\u06cc \u06a9\u0646\u062f. \u0627\u0632 \u0637\u0631\u0641 \u062f\u06cc\u06af\u0631\u060c \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 userId \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0639\u0645\u0644\u06cc\u0627\u062a \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627 \u0622\u0645\u0627\u062f\u0647 \u0634\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u0642\u0644\u0627\u0628 useEffect \u0628\u0631\u0627\u06cc \u0648\u0627\u06a9\u0634\u06cc \u0645\u062c\u062f\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D9%86%D8%A7%D8%A8%D8%B9\"><\/span>\n<p>  \u0645\u0646\u0627\u0628\u0639<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>https:\/\/next-auth.js.org\/getting-started\/introduction <\/p>\n<p>https:\/\/tanstack.com\/query\/latest <\/p>\n<p>https:\/\/swr.vercel.app\/ <\/p>\n<p>https:\/\/github.com\/pmndrs\/zustand <\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u067e\u0633\u062a \u062a\u0645\u0627\u0645 \u0634\u062f<br \/>\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u0645\u0646 \u062a\u0645\u0627\u0633 \u0628\u06af\u06cc\u0631\u06cc\u062f &#8211;<\/p>\n<p>\u0627\u06cc\u0646\u0633\u062a\u0627\u06af\u0631\u0627\u0645 &#8211; https:\/\/www.instagram.com\/supremacism__shubh\/<br \/>\u0644\u06cc\u0646\u06a9\u062f\u06cc\u0646 &#8211; https:\/\/www.linkedin.com\/in\/shubham-tiwari-b7544b193\/<br \/>\u0627\u06cc\u0645\u06cc\u0644 &#8211; shubhmtiwri00@gmail.com<\/p>\n<p>\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631 \u0644\u06cc\u0646\u06a9 \u0632\u06cc\u0631 \u0628\u0647 \u0645\u0646 \u06a9\u0645\u06a9 \u06a9\u0646\u06cc\u062f \u0628\u0627 \u062a\u0634\u06a9\u0631\ud83d\udc47\ud83d\udc47<br \/>https:\/\/www.buymeacoffee.com\/waaduheck<\/p>\n<p>\u0627\u06cc\u0646 \u067e\u0633\u062a \u0647\u0627 \u0631\u0627 \u0646\u06cc\u0632 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f<\/p>\n<\/p><\/div>\n<p><script async src=\"\/\/www.instagram.com\/embed.js\"><\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u0645\u0642\u062f\u0645\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0644\u0633\u0647 \u0645\u0633\u0626\u0648\u0644 \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062e\u0627\u0635 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u0686\u0646\u062f\u06cc\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06cc\u0627 \u062a\u0639\u0627\u0645\u0644 \u0628\u0627 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628 \u0627\u0633\u062a. \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0648\u0628\u060c \u00ab\u062c\u0644\u0633\u0647\u00bb \u0628\u0647 \u062f\u0648\u0631\u0647\u200c\u0627\u06cc \u0627\u0637\u0644\u0627\u0642 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u062f\u0631 \u0637\u06cc \u0622\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647 \u0637\u0648\u0631 \u0641\u0639\u0627\u0644 \u0628\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u062a\u0639\u0627\u0645\u0644 \u062f\u0627\u0631\u062f\u060c \u0627\u0632 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0648\u0627\u0631\u062f &hellip;<\/p>\n","protected":false},"author":2,"featured_media":77965,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-77960","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/77960","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=77960"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/77960\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/77965"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=77960"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=77960"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=77960"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}