Library

๐ŸŽ† useEffectuseEffect()๋Š” ํŽ˜์ด์ง€์˜ ๋งˆ์šดํŠธ, ์–ธ๋งˆ์šดํŠธ, ์—…๋ฐ์ดํŠธ ์‹œ ์ž‘์—…์„ ์„ค์ •ํ•œ๋‹ค.์šฉ์–ด์„ค๋ช…Mount์ปดํฌ๋„ŒํŠธ๊ฐ€ ํŽ˜์ด์ง€์— ๋‚˜ํƒ€๋‚จunMount์ปดํฌ๋„ŒํŠธ๊ฐ€ ํŽ˜์ด์ง€์—์„œ ์‚ฌ๋ผ์ง ์—…๋ฐ์ดํŠธ๋Š” useEffect() ํŠน์ •๊ฐ’์— ์˜์กดํ•˜์—ฌ ํ•ด๋‹น ๊ฐ’์ด ๋ณ€๊ฒฝ, ์‹คํ–‰๋˜๋ฉด ํ•ด๋‹น useEffect()๋ฅผ ์žฌ์‹คํ–‰ํ•œ๋‹ค. useEffect()์˜ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.useEffect(()=> { // ๋งˆ์šดํŠธ ์™„๋ฃŒ ํ›„ ์‹คํ–‰ํ•  ์ฝ”๋“œ return () => { // ์–ธ๋งˆ์šดํŠธ ์™„๋ฃŒ ํ›„ ์‹คํ–‰ํ•  ์ฝ”๋“œ }}, [dependencies]) dependencies์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์–ธ๋งˆ์šดํŠธ๊ฐ€ ์ผ์–ด๋‚˜๋ฉด์„œ return()์„ ํ†ตํ•ด ๊ธฐ์กด ์ž‘์—…์€ ํ•ด์ œํ•˜๊ณ  ๋‹ค์‹œ ๋งˆ์šดํŠธ ์‹œํ‚จ๋‹ค.   ๐Ÿ’ป Code๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•œ๋‹ค..
๐Ÿ‘จ๐Ÿป‍๐Ÿผ useState ํŠน์ • ๊ฐ’์„ useState()๋กœ ์„ ์–ธํ•˜์—ฌ์„œ ๊ฐ’์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ํ•ด๋‹น ๊ฐ’์˜ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ํ™”๋ฉด์„ ๋ฆฌ๋ Œ๋”๋งํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด์—ฌ์ค€๋‹ค. ์ด๋•Œ, ๋ฆฌ๋ Œ๋”๋ง์ด ์ผ์–ด๋‚˜๋Š” ์ปดํฌ๋„ŒํŠธ์— ์ž์‹ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์žˆ๋‹ค๋ฉด, ์ž์‹ ์ปดํฌ๋„ŒํŠธ ๋˜ํ•œ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์™€์ง€๋ฉด์„œ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๊นŒ์ง€ ๋ฆฌ๋ Œ๋”๋ง ๋ฉ๋‹ˆ๋‹ค. ๐Ÿ’ป Code ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ , ๋‹ค์Œ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ค€๋‹ค. ๐Ÿ“„ StateComponent.tsx import React, { useState } from 'react' export function StateComponent(): JSX.Element { const [num, setNum] = useState(0) const onIncrease = () => setNum(num + 1) const onDec..
์ž‘์„ฑ์ž ๊ฐœ๋ฐœ ํ™˜๊ฒฝ โœ… VScode โœ… Mac or Windows ๐Ÿ› ๏ธ ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ (CRA) CRA๋Š” Create-React-App์˜ ์•ฝ์ž๋กœ ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ(CMD) ํ˜น์€ >_ Terminal ์„ ์—ด์–ด์ค€๋‹ค. ๊ทธ ๋‹ค์Œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. $ npx create-react-app ์— .์„ ๋„ฃ์œผ๋ฉด ํ˜„์žฌ ๊ฒฝ๋กœ์— ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋˜๊ณ , ์— ๋ฌธ์ž๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ํ•ด๋‹น ๋ฌธ์ž๋ฅผ ํด๋”๋ช…์œผ๋กœ ํ•˜๋Š” ํด๋”๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ทธ ์•ˆ์— ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ๋Š” ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์˜ ์˜ต์…˜์„ ๋ถ€๊ฐ€ํ•œ๋‹ค. --template typescript๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. ์•„๋ฌด๊ฒƒ๋„ ์ž‘์„ฑํ•˜์ง€ ์•Š์„ ์‹œ default๋กœ JavaScript ํ”„๋กœ์ ํŠธ๋ฅผ ..
๐ŸŒ ๋ฆฌ์•กํŠธ ๋ฉ”ํƒ€์—์„œ ๊ฐœ๋ฐœํ•œ ์˜คํ”ˆ ์†Œ์Šค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ํŽ˜์ด์ง€ ์ „ํ™˜ ๋ฐ ์‚ฌ์šฉ์ž UI ๋ถ€๋ถ„์—์„œ ์ƒ๋‹นํžˆ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋˜๋Š” html์„ ํ•จ์ˆ˜, array, object์— ๋ณด๊ด€ํ•˜์—ฌ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜์—ฌ ํฐ ํ”„๋กœ์ ํŠธ์ผ์ˆ˜๋ก html ๊ด€๋ฆฌ๊ฐ€ ํŽธํ•ด์ง„๋‹ค. https://ko.legacy.reactjs.org/ React – ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ A JavaScript library for building user interfaces ko.legacy.reactjs.org โฌ‡๏ธ Install ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ nodejs๋ฅผ ์„ค์น˜ํ•ด์•ผํ•œ๋‹ค. ์„ค์น˜๊ฐ€ ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ(CMD)๋ฅผ ์—ด์–ด์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•œ๋‹ค. ..
ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•˜๊ณ  ์ธ์ฆ๋ฐ›๊ณ , ๊ฒ€์ฆํ•˜๋ ค๋Š”๋ฐ ๊ตฌ์กฐ์™€ ํ”„๋กœ์„ธ์‹ฑ์„ ์ดํ•ดํ•˜๋Š”๋ฐ 5์ผ์ด ๊ฑธ๋ฆฐ ๊ฑฐ ๊ฐ™๋‹ค... ๊ฐœ๋ฐœ๋ ์ˆ˜๋ก ํ‹ฐ์Šคํ† ๋ฆฌ์˜ ๋‚ด์šฉ ๋ฐ ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ ์‚ฌ์ดํŠธ - ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰์œผ๋กœ "jwt", "token" ์ธ์ฆ ๊ด€๋ จ ๊ฒ€์ƒ‰์œผ๋กœ ๋‚˜์˜จ ๋‚ด์šฉ ์ „๋ถ€ ๐Ÿง  ์‚ฌ์ „ ์ง€์‹const jwt = require('jsonwebtoken'); // // ํ† ํฐ ๋ฐœ๊ธ‰ ์ฝ”๋“œ // // Data - ํ† ํฐ์— ๋‹ด์„ ๋‚ด์šฉ์„ ๋‹ด์Šต๋‹ˆ๋‹ค. // SecretKey - ์ž„์˜์ ์œผ๋กœ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ •ํ•ด์ค๋‹ˆ๋‹ค. // options - ํ† ํฐ์˜ ์œ ํšจ๊ธฐ๊ฐ„ ๋ฐ ์„œ๋ช… ์˜ต์…˜์„ ์ง€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. const token = jwt.sign(Data, SecretKey, signOptions ) // // ํ† ํฐ ๊ฒ€์ฆ ์ฝ”๋“œ // // token - ๋ฐœ๊ธ‰ ๋ฐ›์€ ํ† ํฐ์„ ๋‹ด์Šต๋‹ˆ๋‹ค. /..
์ฐธ๊ณ  ์‚ฌ์ดํŠธ • https://puleugo.tistory.com/138 ๐ŸŽซAccessToken๊ณผ ๐ŸชชRefreshToken • AccessToken: ์„œ๋ฒ„ API๋ฅผ ์ง์ ‘ ์š”์ฒญํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. • RefreshToken: ์•ก์„ธ์Šค ํ† ํฐ์ด ๋งŒ๋ฃŒ๋˜์—ˆ์„ ๋•Œ ์•ก์„ธ์Šค ํ† ํฐ์„ ์žฌ๋ฐœ๊ธ‰ํ•  ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ๐Ÿง‘๐Ÿป‍โค๏ธ‍๐Ÿ‘ฉ๐Ÿป๋ถ„๋ฆฌ ๋ชฉ์  ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ API ํ†ต์‹  ์ค‘, ํ† ํฐ์ด ํ•ด์ปค์—๊ฒŒ ์œ ์ถœ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ, ์ง์ ‘ API๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์•ก์„ธ์Šค ํ† ํฐ์˜ ์ฃผ๊ธฐ๋Š” ์งง๊ฒŒ ์„ค์ •ํ•˜๊ณ  (์•ฝ 1์‹œ๊ฐ„) ์•ก์„ธ์Šค ํ† ํฐ์„ ์žฌ๋ฐœ๊ธ‰ํ•˜๋Š” ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์˜ ์ฃผ๊ธฐ๋Š” ๋น„๊ต์  ๊ธธ๊ฒŒ ์„ค์ •ํ•œ๋‹ค. (์•ฝ 2์ฃผ) ์ด๋ ‡๊ฒŒ ๋œ๋‹ค๋ฉด ์•ก์„ธ์Šค ํ† ํฐ์ด ์œ ์ถœ๋˜๋”๋ผ๋„ ๋งŒ๋ฃŒ ์ฃผ๊ธฐ๊ฐ€ ์งง์•„ ํ”ผํ•ด๋ฅผ ์กฐ๊ธˆ์ด๋‚˜๋งˆ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ’ป ๊ฐœ๋ฐœ ์•ก์„ธ์Šค/๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ๋ฐฉ์‹์€ ์ค‘๊ฐ„์— ํƒˆ์ทจ ๋‹น..
์ฐธ๊ณ  ์‚ฌ์ดํŠธ • https://velopert.com/2389 ๐Ÿ—ผ ๊ตฌ์กฐ jwt๋Š” ' . ' ์„ ๊ตฌ๋ถ„์ž๋กœ 3๊ฐ€์ง€ ๋ฌธ์ž์—ด๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๐Ÿ‘ท๐Ÿป‍โ™‚๏ธ Header Header๋Š” ๋‘๊ฐ€์ง€์˜ ์ •๋ณด๋ฅผ ์ง€๋‹ˆ๊ณ  ์žˆ๋‹ค. • typ: ํ† ํฐ์˜ ํƒ€์ž…์„ ์ง€์ •ํ•œ๋‹ค. ์ฆ‰, jwt • alg: ํ•ด์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ง€์ •ํ•œ๋‹ค. ํ•ด์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ณดํ†ต HMAC SHA256 ํ˜น์€ RSA๊ฐ€ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ† ํฐ์„ ๊ฒ€์ฆํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” signature๋ถ€๋ถ„์—์„œ ์‚ฌ์šฉ๋œ๋‹ค. { "typ": "JWT", "alg": "HS256" } ๋‹ค์Œ์„ base64๋กœ ์ธ์ฝ”๋”ฉ ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. const header = { typ: 'JWT', alg: 'HS256', }; const encodedHeader = new Buffer(JS..
์ฐธ๊ณ ์‚ฌ์ดํŠธhxyxneee.log๋‹˜์˜ ๋ฒจ๋กœ๊ทธ์šฐ๋ฆฌ๋Š” ๋ณธ์ธ์„ ์ธ์ฆํ•  ๋•Œ, ์ค‘์š”ํ•œ ์ •๋ณด๋“ค์„ ๋‹ด์•„๋ณด๋‚ธ๋‹ค.์•„์ด๋””, ๋น„๋ฐ€๋ฒˆํ˜ธ, ๊ฐœ์ธ์ •๋ณด(์ด๋ฆ„, ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ, ํ•ธ๋“œํฐ ๋ฒˆํ˜ธ) ๋“ฑ...๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๋•Œ ์œ ์ถœ์ด ๋˜๋”๋ผ๋„ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๋ฐ€์Šค๋Ÿฝ๊ฒŒ ๋ฐ”๊พธ์–ด ํ•ด์ปค๊ฐ€ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•˜์ง€ ๋ชปํ•˜๋„๋กํ•ด์•ผ ์กฐ๊ธˆ์ด๋‚˜๋งˆ ๋” ์•ˆ์ „ํ•  ์ˆ˜ ์žˆ๊ธฐ์— ์•”ํ˜ธํ™”๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๐Ÿ”‘ ์•”ํ˜ธํ™”์•”ํ˜ธํ™”๋ž€, ํŠน์ • ์ง€์‹์„ ์†Œ์œ ํ•˜๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์„ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ˆ„๊ตฌ๋“ ์ง€ ์ฝ์–ด๋ณผ ์ˆ˜ ์—†๋„๋ก ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.๋ฐ˜๋Œ€๋กœ ์•”ํ˜ธ๋ฌธ์„ ํ‰๋ฌธ์œผ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์„ ๋ณตํ˜ธํ™”๋ผ๊ณ ํ•œ๋‹ค. โš ๏ธ  ์•”ํ˜ธํ™”์˜ ํ•„์š”์„ฑ์œ ์ €์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ๊ทธ๋Œ€๋กœ DATABASE์— ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.โ“ DB๊ฐ€ ํ•ดํ‚น ๋‹นํ•˜๋ฉด ์œ ์ €์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋…ธ์ถœ๋œ๋‹ค.โ“ ์™ธ๋ถ€ ํ•ดํ‚น์ด ์•„๋‹ˆ๋”๋ผ๋„ ๋‚ด๋ถ€ ๊ฐœ๋ฐœ์ž๊ฐ€ DB์— ์ ‘๊ทผํ•ด ๊ฐœ์ธ์ •๋ณด๋ฅผ ๋ณผ..
ma.caron_g
'Library' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (3 Page)