본문 바로가기

Python36

구글 소셜 로그인 in Django - 1. 애플리케이션 세팅하기 Google Developers 설정 1️⃣ 프로젝트 만들기 Credentials Page로 이동 API 및 서비스를 통해 들어가서 프로젝트를 만들 수 있다. Oauth 동의 화면으로 들어가서 앱 정보 입력 후 저장. OAuth 동의 화면 간단한 앱 이름과 이메일 등을 입력하면 된다. 범위 소셜 로그인 기능에서는 범위 추가를 누르고 상단 3개의 범위만 체크해줘도 이용이 가능하다. 체크 이후에 하단의 업데이트 버튼을 누르면 적용된다. 테스트 사용자 > 앱 게시 이전에 액세스할 수 있는 이메일 등을 적는 곳, 바로 앱 게시를 하면 추가하지 않아도 좋다. 완료 후 앱 게시를 눌러준다. 2️⃣ OAuth 클라이언트 ID 만들기 같은 화면의 사용자 인증 정보 탭에 들어가 사용자 인증 정보 만들기 > OAuth 클.. 2023. 5. 31.
카카오 소셜 로그인 in Django 1️⃣ 카카오 로그인의 전반적인 과정 이해하기 카카오 로그인 요청 > 인가 코드 받기 요청 > 인증 및 동의 > 코드 발급(url parameter로 code를 준다) > 코드로 토큰 발급 요청 > 토큰 발급 > 토큰으로 유저 정보에 access > 해당 정보로 내 서비스에 가입시키면 된다. 그 중 REST API를 사용한 카카오 로그인 과정은 다음과 같다. 2️⃣ 카카오 앱 설정 카카오 애플리케이션 Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다. developers.kakao.com 해당 페이지를 참고해 새로운 애플리케이션을 등록해준다. 이미 등록한 애플리케이션이 있다면 카카오 로.. 2023. 5. 30.
Django MySQL 설정하기 1️⃣ MySQL을 설치해준다. MySQL :: MySQL Community Downloads The world's most popular open source database Contact MySQL | Login | Register dev.mysql.com 2️⃣ 장고에서 사용을 위해 mysqlclient를 설치해준다. pip install mysqlclient 3️⃣ 장고에 이제 SQL 세팅을 둘 파일을 만들어준다. (일반적으로 my_settings.py 라는 이름) 해당 파일안에 DB에 사용할 설정들을 적어준다. DATABASES = { 'default' : { 'ENGINE': 'django.db.backends.mysql', 'NAME': '', 'USER': '< D B .. 2023. 5. 30.
Django 공식문서 읽기 - Customizing authentication in Django(4) Custom permissions 맞춤 권한 설정을 위해 permissions 모델의 Meta 속성을 사용 class Task(models.Model): ... class Meta: permissions = [ ("change_task_status", "Can change the status of tasks"), ("close_task", "Can remove a task by setting its status as closed"), ] 이것의 역할은 migrate를 할 때 추가적인 권한을 실행하는 것. 여기서 추가한 권한은 has_perm() 메소드를 통해 검사할 수 있다. user.has_perm("app.close_task") Extending the existing User model User 모.. 2023. 5. 3.
Django 공식문서 읽기 - Customizing authentication in Django(3) Handling authorization in custom backends 더보기 사용자 지정 백엔드 인증에서는 자체 권한을 제공할 수 있다. User모델과 관리자는 권한 조회 기능을 백엔드에 위임한다. 백엔드가 has_perm() 또는 has_module_perms()에서 PermissionDenied 예외를 발생시키면 인증이 즉시 실패하고 Django는 이후의 백엔드를 확인하지 않는다. 전체 인증 구현은 기본 백엔드인 django/message/auth/backends.py의 ModelBackend 클래스에서 찾을 수 있으며 대부분 auth_permission 테이블을 쿼리(?)한다. Authorization for anonymous users 더보기 Django의 권한 프레임워크에는 익명 사용자에 .. 2023. 5. 2.
Django 공식문서 읽기 - Customizing authentication in Django(2) Writing an authentication backend get_user 메서드는 user_id(사용자 이름, 데이터베이스 ID 등일 수 있지만 사용자 개체의 PK여야 함)를 사용하고 사용자 객체 또는 None을 반환한다. from django.contrib.auth.backends import BaseBackend class MyBackend(BaseBackend): def authenticate(self, request, username=None, password=None): # Check the username/password and return a user. ... 토큰도 인증할 수 있다. from django.contrib.auth.backends import BaseBackend class.. 2023. 5. 2.
Django 공식문서 읽기 - Customizing authentication in Django(1) 해당 공식문서 Customizing authentication in Django 더보기 장고 기본인증도 좋다. 그러나 원하면 다른 인증을 사용해도 좋다. 이 문서는 어떻게 인증 시스템을 커스터마이징 할 지를 다룬다. authentication-backends는 user model에 저장된 username과 password가 Django의 디폴트가 아닌 다른 서비스(예를들면 jwt등을 말하는 듯?)에서 인증되어야 할 경우를 위한 확장가능한 시스템을 제공 기본 User 모델을 확장하거나 커스텀할 수 있다(맞춤 권한 등을 줄 수도 있다). Other authentication sources 더보기 username과 password말고 다른 인증이 필요할 수 있다. Specifying authentication.. 2023. 4. 30.
Django restframework 프로젝트 세팅과 진행 0. 프로젝트 구상 - 와이어프레임 - erd - api 명세서 1. 프로젝트 폴더 생성, poetry, git 등 설정 - git init - .gitignore - 원격 repository remote 등 - poetry init -n(poetry 사용 시) 2. 가상환경 잡기 - poetry shell 또는 venv 3. 필요 패키지들 설치하기 - django - drf - simple jwt - 그 외 autopep8 등 필요 패키지 4. 프로젝트 시작 - startproject config . 또는 . 5. settings 파일 수정하기 - INSTALLED_APPS - REST_FRAMEWORK - SIMPLE_JWT - TIME_ZONE - LANGUAGE_CODE https://django.. 2023. 4. 28.
미리 알려주지만, 이 글을 클릭하지 않으면 당신의 프로젝트는 위험합니다! 시크릿 키 분리 방법 3가지 1️⃣ secrets.json secrets.json 파일 생성 - setting.py 수정 - secrets.json 파일 수정 장점 : 패키지 설치할 필요 없음, 파일 2개만 수정하면 끝. 단점 : settings.py에 팔만대장경을 적어야 한다. #settings.py import os import json from django.core.exceptions import ImproperlyConfigured secret_file = os.path.join(BASE_DIR, 'secrets.json') with open(secret_file) as f: secrets = json.loads(f.read()) def get_secret(setting): try: return .. 2023. 4. 26.