Django Auth

Auth

  • django.contrib.authโ†’ ์ธ์ฆ ํ•ต์‹ฌ ๋กœ์ง๊ณผ ๊ด€๋ จ ๊ธฐ๋ณธ ๋ชจ๋ธ

  • django.contrib.contenttypes โ†’ ์‚ฌ์šฉ์ž์˜ ๋ชจ๋ธ๊ณผ ๊ถŒํ•œ์„ ์—ฐ๊ฒฐ

  • ์ธ์ฆ(Authentication)๊ณผ ๊ถŒํ•œ(Authorization)์„ ํ•ฉ์ณ์„œ Auth๋ผ๊ณ  ๋Œ€๊ฐœ ์ธ์ฆ์‹œ์Šคํ…œ์ด๋ผ๊ณ  ๋ช…๋ช…

    • ์ธ์ฆ(Authentication) : ๋‚ด๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€๋ฅผ ์ž…์ฆํ•˜๋Š” ๊ฒƒ

    • ๊ถŒํ•œ(Authorization) : ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž๊ฒฉ ์—ฌ๋ถ€


  • http ํŠน์ง•

    • Connectionless(๋น„์—ฐ๊ฒฐ์ง€ํ–ฅ)

      • ํ•œ ๋ฒˆ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ํ•˜๋ฉด ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง

    • Stateless(๋ฌด์ƒํƒœ)

      • ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง€๋ฉด ํ†ต์‹ ์ด ๋๋‚˜๊ณ  ์„œ๋กœ๋ฅผ ์žŠ์–ด๋ฒ„๋ฆผ

      • ๋ชจ๋“  ๋ฉ”์„ธ์ง€๋Š” ๋…๋ฆฝ์ 

        • cookie์™€ ์„ธ์…˜์ด ์—†๋‹ค๋ฉด

          • ์ด์ „์˜ ์š”์ฒญ์„ ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋œ๋‹ค


  1. Cookie

  • Server โ†’ Web browser์— ์ „๋‹ฌํ•˜๋Š” ์ž‘์€ ๋ฐ์ดํ„ฐ ์กฐ๊ฐ

    • ์œ ์ €๊ฐ€ ์›น์„ ๋ฐฉ๋ฌธํ•˜๊ฒŒ ๋˜๋ฉด ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ฟ ํ‚ค๋ฅผ ์ „๋‹ฌ๋ฐ›์Œ

  • Key-Value ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋จ

  • ์ดํ›„ ๋™์ผํ•œ ์„œ๋ฒ„์— ๋ณด๋‚ด๋Š” ๋ชจ๋“  ์š”์ฒญ์— cookie๊ฐ€ ํ•จ๊ป˜ ์ „๋‹ฌ

  • cookie data๋Š” user์˜ ๋กœ์ปฌ์— ์ €์žฅ๋˜๋Š” ์ •๋ณด


  1. Session

  • session์€ server์™€ client๊ฐ„ State(์ƒํƒœ)๋ฅผ ๊ธฐ์–ตํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ

Django์˜ Session ๊ณผ Auth

  • django์—์„œ ์•Œ์•„์„œ ์ฒ˜๋ฆฌํ•ด์ฃผ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ง์ ‘ ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค


Django์˜ Authentication System

  • ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์ œ๊ณต๋˜๋Š” ๊ฐ•๋ ฅํ•œ ๋‚ด์žฅ ์‹œ์Šคํ…œ(Built-in Form)

  • ๋กœ๊ทธ์ธ์„ ์œ„ํ•œ ๊ธฐ๋ณธ์ ์ธ form์„ ์ œ๊ณต

  • login()

๊ธฐ๋ณธ ํ๋ฆ„

  1. ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•˜๋ฉด authenticate() ํ•จ์ˆ˜๊ฐ€ ์‚ฌ์šฉ์ž ์ž๊ฒฉ ์ฆ๋ช…์„ ํ™•์ธ

  2. ์„ฑ๊ณต์ ์œผ๋กœ ์ธ์ฆ๋˜๋ฉด login() ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์–ด ์„ธ์…˜์— ์‚ฌ์šฉ์ž ์ •๋ณด๊ฐ€ ์ €์žฅ

  3. ๊ถŒํ•œ ๊ธฐ๋ฐ˜ ์ž‘์—…์€ has_perm()์ด๋‚˜ has_module_perms()๋ฅผ ํ†ตํ•ด ํ™•์ธ ๊ฐ€๋Šฅ

  4. ๋กœ๊ทธ์•„์›ƒ ์‹œ logout() ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์–ด ์„ธ์…˜์ด ์ข…๋ฃŒ

Last updated