โญ 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. ์ด์ 1 ยทยทยท 5 6 7 8 9 10 11 ยทยทยท 17 ๋ค์