๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

โญ Personal_Study97

DFR Auth System DFR Auth System Authentication & Authorization Authentication - ์ธ์ฆ, ์ž…์ฆ โœ” ์ž์‹ ์ด๋ผ๊ณ  ์ฃผ์žฅํ•˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ํ™•์ธํ•˜๋Š” ํ–‰์œ„ โœ” ๋ชจ๋“  ๋ณด์•ˆ ํ”„๋กœ์„ธ์Šค์˜ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„ โœ” ์ฆ‰, ๋‚ด๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ • โœ” 401 Unauthorized Authorizaion - ๊ถŒํ•œ ๋ถ€์—ฌ, ํ—ˆ๊ฐ€ โœ” ์‚ฌ์šฉ์ž์—๊ฒŒ ํŠน์ • ๋ฆฌ์†Œ์Šค ๋˜๋Š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์—‘์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ณผ์ •(์ ˆ์ฐจ) โœ” ๋ณด์•ˆ ํ™˜๊ฒฝ์—์„œ ๊ตฌ๋„ˆํ•œ ๋ถ€์—ฌ๋Š” ํ•ญ์ƒ ์ธ์ฆ์ด ๋จผ์ € ํ•„์š”ํ•จ ์‚ฌ์šฉ์ž๋Š” ์กฐ์ง์— ๋Œ€ํ•œ ์—‘์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌ ๋ฐ›๊ธฐ ์ „์— ๋จผ์ € ์ž์‹ ์˜ ID๊ฐ€ ์ง„์งœ์ธ์ง€ ๋จผ์ € ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค. โœ” ์„œ๋ฅ˜์˜ ๋“ฑ๊ธ‰, ์›น ํŽ˜์ด์ง€์—์„œ ๊ธ€์„ ์กฐํšŒ/์‚ญ์ œ/์ˆ˜์ • ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•, ์ œํ•œ๊ตฌ์—ญ(admin) ๋“ฑ๋“ฑ ์ธ์ฆ์ด ๋˜์—ˆ์–ด๋„ ๋ชจ๋“  ๊ถŒํ•œ์„ ๋ถ€์—ฌ .. 2022. 11. 22.
Vue with DRF Vue with DRF Article Read ์‘๋‹ต ๋ฐ›์€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ํ™•์ธ โœ” dataArray์— ๊ฐ ๊ฒŒ์‹œ๊ธ€ ๊ฐ์ฒด โœ” ๊ฐ ๊ฒŒ์‹œ๊ธ€ ๊ฐ์ฒด๋Š” id, title, content๋กœ ๊ตฌ์„ฑ store/index.js ์ˆ˜์ • // store/index.js export default new Vuex.Store({ state: { articles: [], }, getters: { }, mutations: { GET_ARTICLES(state, articles) { state.articles=articles } }, actions: { getArticles(context) { axios({ method: 'get', url: `${API_URL}/api/v1/articles/` }) .then((res) => { // co.. 2022. 11. 21.
Cross - Origin Resource Sharing (CORS) Cross - Origin Resource Sharing (CORS) ๊ฐœ์š” โœ” ๋ณด์•ˆ์ƒ์˜ ์ด์œ ๋กœ ๋ธŒ๋ผ์šฐ์ €๋Š” ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…(SOP)์— ์˜ํ•ด ๋‹ค๋ฅธ ์ถœ์ฒ˜์˜ ๋ฆฌ์†Œ์Šค์™€ ์ƒํ˜ธ์ž‘์šฉ ์ œํ•œ SOP(Same - Origin Policy) โœ” ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ… โœ” ๋ถˆ๋Ÿฌ์˜จ ๋ฌธ์„œ๋‚˜ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋‹ค๋ฅธ ์ถœ์ฒ˜์—์„œ ๊ฐ€์ ธ์˜จ ๋ฆฌ์†Œ์Šค์™€ ์‚ฌํ˜ธ ์ž‘์šฉํ•˜๋Š” ๊ฒƒ์„ ์ œํ•œํ•˜๋Š” ๋ณด์•ˆ ๋ฐฉ์‹ โœ” ์ž ์žฌ์ ์œผ๋กœ ํ•ด๋กœ์šธ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์„œ๋ฅผ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ๊ณต๊ฒฉ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ๋ฅผ ์ค„์ธ๋‹ค. Origin - ์ถœ์ฒ˜ โœ” URL์˜ Protocol, Host, Port๋ฅผ ๋ชจ๋‘ ํฌํ•จํžˆ์—ฌ ์ถœ์ฒ˜๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์˜ˆ์‹œ CORS - ๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ  โœ” ์ถ”๊ฐ€ HTTP Header๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ํŠน์ • ์ถœ์ฒ˜์—์„œ ์‹คํ–‰ ์ค‘์ธ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋‹ค๋ฅธ ์ถœ์ฒ˜์˜ ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ถ€ํ˜€์•Ÿ๋„๋ก ๋ธŒ๋ผ.. 2022. 11. 20.
Vue with DRF: Server & Client Vue with DRF Server & Client Server โœ” ํด๋ผ์ด์–ธํŠธ์— ์ •๋ณด์™€ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ โœ” ์„œ๋น„์Šค ์ „์ฒด๋ฅผ ์ œ๊ณต -> Django Web Service โœ” ์ •๋ณด๋ฅผ ์ œ๊ณต -> Django API Service โœ” DB์™€ ํ†ต์‹ ํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑ, ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œ๋ฅผ ๋‹ด๋‹น Client โœ” Server๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค์— ์ ์ ˆํ•œ ์š”์ฒญ์„ ํ†ตํ•ด Server๋กœ๋ถ€ํ„ฐ ๋ฐ˜ํ™˜ ๋ฐ›์€ ์‘๋‹ต์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œํ˜„ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ํ”„๋กœ๊ทธ๋žจ ํ˜น์€ ์‹œ์Šคํ…œ โœ” ์‘๋‹ต๋ฐ›์€ ์ •๋ณด๋ฅผ ๊ฐ€๊ณตํ•˜์—ฌ ํ™”๋ฉด์— ํ‘œํ˜„ DRF Back skeleton ์ฝ”๋“œ ํ™•์ธ Models from django.db import models from django.conf import settings # Create your models here... 2022. 11. 20.
Article with Vue Articles with Vue ์‚ฌ์ „ ์ค€๋น„ $ vue create articles $ cd articles $ vue add vuex $ vue add router // App.vue Index state ์ •์˜ // store/index.js import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Store({ state: { article_id: 3, articles: [ { id: 1, title: 'title1', content: 'content1', createdAt: new Date().getTime() }, { id: 2, title: 'title2', content: 'content2', creat.. 2022. 11. 19.
Navigation Guard Navigation Guard ๋„ค๋น„๊ฒŒ์ด์…˜ ๊ฐ€๋“œ โœ” Vue router๋ฅผ ํ†ตํ•ด ํŠน์ • URL์— ์ ‘๊ทผํ•  ๋•Œ ๋‹ค๋ฅธ url๋กœ redirect ํ•˜๊ฑฐ๋‚˜ ํ•ด๋‹น URL๋กœ์˜ ์ ‘๊ทผ์„ ๋ง‰๋Š” ๋ฐฉ๋ฒ• ๋„ค๋น„๊ฒŒ์ด์…˜ ๊ฐ€๋“œ์˜ ์ข…๋ฅ˜ โœ” ์ „์—ญ ๊ฐ€๋“œ: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์—ญ์—์„œ ๋™์ž‘ โœ” ๋ผ์šฐํ„ฐ ๊ฐ€๋“œ: ํŠน์ • url์—์„œ๋งŒ ๋™์ž‘ โœ” ์ปดํฌ๋„ŒํŠธ ๊ฐ€๋“œ: ๋ผ์šฐํ„ฐ ์ปดํฌ๋„ŒํŠธ ์•ˆ์— ์ •์˜ ์ „์—ญ ๊ฐ€๋“œ Global Before Guard โœ” ๋‹ค๋ฅธ url ์ฃผ์†Œ๋กœ ์ด๋™ํ•  ๋•Œ ํ•ญ์ƒ ์‹คํ–‰ โœ” router/index.js์— router.beforeEach()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์ • โœ” ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ๊ฐ’์œผ๋กœ ๋‹ค์Œ 3๊ฐœ์˜ ์ธ์ž๋ฅผ ๋ฐ›๋Š”๋‹ค to: ์ด๋™ํ•  url ์ •๋ณด๊ฐ€ ๋‹ด๊ธด Route ๊ฐ์ฒด from: ํ˜„์žฌ url ์ •๋ณด๊ฐ€ ๋‹ด๊ธด route ๊ฐ์ฒด next: ์ง€์ •ํ•œ url๋กœ ์ด๋™ํ•˜๊ธฐ ์œ„ํ•ด ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜ .. 2022. 11. 19.