web/django 18

[django] custom authentication 및 custom user를 통해 구글 로그인 구현하기 (feat. supabase) - 2

이제 supabase의 sso 관련 api를 활용해 로그인 기능을 어떻게 구현했는지에 대해 알아보자. (오래되어서 자세한 디테일은 기억이 안나지만...) supabase에서 제공하는 api (https://supabase.com/docs/guides/auth/social-login/auth-google)를 곧바로 사용해도 되지만, 나의 경우는 서비스에서 sso 로그인과 일반 로그인을 전부 제공하고 싶어서 user 테이블을 따로 만들었다.sso 로그인 시 원래는 auth 스키마의 users 테이블 아래 그 정보가 저장되는데, 이제 public 스키마의 users 테이블에다가도 정보를 추가로 저장하여 일반 로그인 정보와 함께 관리하고자 했다. oauth_provider 필드의 값에 따라 일반 로그인 사용자인..

web/django 2024.12.26

[django] custom authentication 및 custom user를 통해 구글 로그인 구현하기 (feat. supabase) - 1

코드 작성한지 몇 달 지나서 (사소한 트러블슈팅들은) 기억은 안나지만 세팅 방법 등을 정리해두고자 글을 남긴다~~  장고에서는 기본적으로 (여러 field와 method가 정의된) Users 모델을 제공하고 있다. username, password, email, first_name, last_name, is_staff, is_active, is_superuser 등의 필드와 check_password, set_password, authenticate 등의 메서드가 포함되어 있다. 기본 User 모델을 상속받아 customize하면 된다. 기본적으로 User 모델은 장고의 세션 인증, 토큰 인증 및 JWT 인증과 연동된다 !!인가(Permission)과 관련되어서는 AllowAny, IsAuthentica..

web/django 2024.12.26

GraduArt backend 구현 중에 겪은 문제 및 trouble shooting

1. 장고 custom jwt authentication + custom user2. allowany vs. isauthenticated decorator3. 구글 로그인 using jwt tokenhttps://minseosavestheworld.tistory.com/319 [django] custom authentication 및 custom user를 통해 구글 로그인 구현하기 (feat. supabase) - 1코드 작성한지 몇 달 지나서 (사소한 트러블슈팅들은) 기억은 안나지만 세팅 방법 등을 정리해두고자 글을 남긴다~~  장고에서는 기본적으로 (여러 field와 method가 정의된) Users 모델을 제공하고minseosavestheworld.tistory.comhttps://minseosa..

web/django 2024.11.06

Django Access Token 재발급 API

토큰에는 두 종류- access token (유효기간 짧은, 인가용 token)- refresh token (유효기간 긴, access token 재발급용 token) 토큰 재발급 과정로그인 인증에 성공한 클라이언트는 Refresh Token과 Access Token 두 개를 서버로부터 받는다.클라이언트는 Refresh Token과 Access Token을 로컬에 저장해놓는다.클라이언트는 헤더에 Access Token을 넣고 API 통신을 한다. (Authorization)일정 기간이 지나 Access Token의 유효기간이 만료되었다.Access Token은 이제 유효하지 않으므로 권한이 없는 사용자가 된다.클라이언트로부터 유효기간이 지난 Access Token을 받은 서버는 401 (Unauthori..

web/django 2024.05.20

Django JWT 토큰 기반의 인증 방식 환경 세팅하기

로직 흐름회원가입 - 클라이언트는 회원가입에 필요한 정보를 request body에 담아서 보낸다. - 서버는 이를 받아서 DB에 저장하고, 해당 유저를 인증할 때 사용될 토큰(access, refresh)을 생성한 다음 이를 쿠키에 담아 보낸다. (보통 회원가입 하면 로그인까지 한 번에 되므로)- 클라이언트는 받은 토큰을 브라우저에 저장해 둔다. 회원가입이 완료된 유저의 로그인 - 클라이언트는 로그인에 필요한 정보를 body에 담아서 보낸다. - 서버는 이 정보를 바탕으로 DB에 접근하여 등록된 User가 있는지 확인하고, 있을 경우 유저 인증에 사용될 토큰(access, refresh)을 생성한 다음 쿠키에 담아 보낸다. - 클라이언트는 토큰을 브라우저에 저장해 둔다. 권한이 필요한 기타 작업들 - ..

web/django 2024.05.20

Django Cookie, Session, 그리고 JWT

Authentication(인증)- 사용자를 식별하는 프로세스 (누구인지 확인)- 회원가입 과정, 로그인 과정Authorization(인가)- 인증된 사용자에게 특정 리소스나 기능에 접근할 수 있는 권한이 있는지 확인하는 프로세스- 누구인지 확인이 완료된 사용자에게 '특정 작업 수행 권한'이 있는지 확인- 권한이 필요한 요청 (게시글 수정, 게시글 삭제) http 통신은 Connectionless (비연결성) + Stateless (무상태성) 을 가진다어딘가에 유저 상태 정보를 저장할 필요가 있음 => Cookie, Session, Token Cookie- 사용자가 웹사이트를 방문하고 이용할 때 사용자의 브라우저에 저장되는 작은 정보 조각- 공지 메세지 하루 안보기, 장바구니 담기 기능- 사용자의 PC에..

web/django 2024.05.20

Django serializer 활용하기 - advanced

[Reminder] What is serializer?Django의 Serializer는 Django에서 모델 인스턴스나 쿼리셋을 다양한 데이터 형식으로 변환하는 데 사용됩니다. 이를 통해 Django 애플리케이션에서 데이터를 직렬화하고 역직렬화하며 클라이언트와 서버 간의 데이터 교환에 사용됩니다. One-To-One , One-To-Many , Many-To-Many 관계가 형성된 상태에서의 serializer 작성은 더 신경써야 할 부분이 있다 User - UserProfile 모델 간 OneToOne 관계 (필드 추가해 확장한 Wrapper 클래스 느낌이다)from rest_framework import ModelSerializerfrom django.contrib.auth.models import..

web/django 2024.05.14

Django 모델 생성하고 Many-To-Many 관계 형성하기

User 모델과 Post 모델이 존재한다고 할 때, 좋아요 기능을 구현해보자- 하나의 Post에 여러 User가 '좋아요'를 누를 수 있음- 한 User는 여러 개의 Post에 '좋아요'를 누를 수 있음 => 즉 User 모델과 Post 모델은 Many-to-Many로 연결되어있으며 Like가 그 중계테이블이다. Django에서 ManyToMany 관계를 만드는 세 가지 방법 1️⃣ 중계 테이블을 직접 만들고, 해당 테이블이 Foreign Key로 두 개의 모델을 가리키는 방법2️⃣ 연결해야하는 모델 중 하나에 ManyToManyField를 사용하여 Django가 자동으로 중계 테이블을 만들도록 하는 방법3️⃣  1+2 방법, 중계 테이블을 만들고 ManyToManyField에 직접 만든 중계 테이블을 ..

web/django 2024.05.14
반응형