일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- intell
- CrossAngle
- 놀이동산의슈퍼컴퓨터를작동시켜라
- 쇠막대기
- 개발자회고
- 인하대학교
- 신영준
- 결과를얻는법
- 인천남중
- 인하멘토링
- 프로그라피
- 프로그래머스
- texttospeech
- 노트북덮개
- 개발자를위한파이썬
- jaypark.dating
- 서구동구예비군훈련장
- Xangle
- 봉사활동
- 타코트론
- machinelearning
- 서버로그
- tacotron
- 2019회고
- 로그남기기
- graphicdriver
- 우분투비트확인
- 나는리뷰어다
- 심플소프트웨어
- 한빛미디어
- Today
- Total
목록Django/Django - 인증편 (19)
jc.jang
주제 중복 로그인을 막기위해 구현한 코드를 수정한다. 노트 17강에서 중복 로그인을 막기 위해 Usersession 모델을 만들고 로그인할 때 마다 세션 값을 저장했다. 로그인 할 때 마다 Usersession을 확인하고 과거에 로그인한 세션에 'kicked'라는 key에 True를 할당하여 로그아웃하는 미들웨어도 추가했다. 하지만 test1로 로그인하고 다시 로그인 페이지로가서 test2로 로그인할 경우 UserSession 관련 에러가 발생한다. 무슨 에러일까? 디버깅 해보니, session_key가 없어서 발생하는 에러였다. 1. test1로 로그인한 상태 -> 2. test2의 ID, PASSWORD 입력 후 로그인 시도 -> 3. test2의 session_key 값을 UserSession 모델..
주제 회원가입 시에 프로필 정보 받기 노트 회원가입 시 프로필은 만드는데, 프로필 정보도 받도록 수정해보자. accounts/forms.py에서 정의한 SignupForm을 재정의한 적이 있다. form은 기본적으로 하나의 모델에만 적용이 가능하다. 따라서 bio, website_url 정보를 받아오고 user save할 때 profile을 저장하자. accounts/forms.py from django import forms from django.contrib.auth.forms import UserCreationForm from django.contrib.auth.models import User from django.core.validators import validate_email from .mo..
주제 프로필 수정 구현 노트 프로필 수정 기능을 구현한다. class based view는 강의에서 다뤘으므로 나는 function based view로 작성해봤다. accounts/urls.py from django.urls import path, reverse_lazy from django.contrib.auth import views as auth_views from . import views urlpatterns = [ # ... path('profile/edit/', views.profile_edit, name='profile_edit'), # ... ] 프로필 수정 url 등록 accounts/forms.py class ProfileForm(forms.ModelForm): class Meta:..
주제 SignupForm에 Meta.model 적용하기 노트 settings.py에 AUTH_USER_MODEL = 'accounts.User'를 설정했다. 회원가입을 시도해보면 에러가 발생한다. accounts/forms.py from django.contrib.auth.forms import UserCreationForm class SignupForm(UserCreationForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['username'].validators = [validate_email] self.fields['username'].help_text = '이메일 형식을 입력하세요.' s..
주제 session을 이용해 중복 로그인을 막는다. 중복 로그인 시 middleware message로 사용자에게 알림 메시지를 노출한다. 노트 한 사용자가 A 브라우저에서 로그인 -> B 브라우저에서 로그인한 경우, A 브라우저의 세션을 종료 시킨다. django/contrib/auth/__init__(링크) 에서 보면 login 메소드는 로그인이 성공적으로 실행됐을 때, user_logged_in 시그널을 호출하는 것을 알 수 있다. django/django The Web framework for perfectionists with deadlines. - django/django github.com 그렇다면 로그인 성공 시 user_logged_in 시그널을 호출하고 커스텀 리시버를 설정하여 기존에 ..
주제 Permission 시스템을 통한 사용자 접근 제한하기 노트 특정 User/Group에 Permission을 할당할 수 있다. admin 페이지에 각 User/Group 별로 Permission 할당 UI가 제공된다. 모델별로 퍼미션 지정이 가능하다. 디폴트 퍼미션 제공: 추가, 수정, 삭제 admin 페이지에서 유저 클릭 후 권한 탭에서 사용자 권한을 확인, 부여할 수 있다. 사용자 권한을 부여하는 것과 별개로, 뷰에서 관련 로직을 따로 처리해줘야한다. 예를 들어, A라는 사용자에게 'can delete post' 권한을 준다고해서 post를 삭제할 수 있는건 아님 실제 상황에서 어떻게 쓰이는지 알아보자. 미션 - 로그인 여부를 먼저 검증하고, 로그인 유저가 GoldUser가 아닐 경우 등급 업그..