Project: westagram -2 (21.05.31)
👍 今日やったこと
タスクの続行2-コストエントリポイントの作成
作成(修正完了)
タスク3進捗-ログインエンドポイントの作成(PRステータス)
🔥 変更
ユーザー・モデルの変更
空の既存のニックネームとphone numberは許可されていますが、許可されていません.
class User(models.Model):
.
.
nickname = models.CharField(max_length=40, unique=True)
phone_number = models.CharField(max_length=13, unique=True)
.
.
既存のget()
から[]
に変更 nickname = data['nickname']
phone_number = data['phone_number']
dbに格納されているパスワードのハッシュ
bcrypt
に変更して処理するdef encrypt_password(password):
return bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt())
データベースに格納されている情報
勘定科目勘定科目3-ログイン機能の実装
📝 View
1.usersまたはaccounts appにログインビューを記入してください.[完了👍]
2.ログインには、ユーザーアカウントとして電子メールとパスワードを使用する必要があります.[完了👍]
3.アカウントまたはパスワードキーが渡されていない場合は、{メッセージ:KEY ERROR}、status code 400を返します.[完了👍]
4.アカウントまたはパスワードの入力が間違っている場合は、{メッセージ:INVALID USER}、status code 401が返されます.[完了👍]
5.ログインに成功すると{"メッセージ":"SUCCESS"},status code 200に戻る.[完了👍]
6.ログインに成功したらtokenに戻ります.[完了👍]
⚙▼処理ロジック
data = json.loads(request.body)
email = data['email']
password = data['password']
user = User.objects.get(email=email)
if not check_password(password, user.password):
return JsonResponse({"message": "INVALID_USER"}, status=401)
user_token = make_user_token(user.id)
return JsonResponse({"message": "SUCCESS", "token": user_token}, status=200)
data = json.loads(request.body)
email = data['email']
password = data['password']
user = User.objects.get(email=email)
if not check_password(password, user.password):
return JsonResponse({"message": "INVALID_USER"}, status=401)
user_token = make_user_token(user.id)
return JsonResponse({"message": "SUCCESS", "token": user_token}, status=200)
🚀 送信データの受信
KeyError
回JSONDecodeError
;🔎 ユーザー情報の表示
get()
メソッドを使用して、Eメールの対応するユーザーがいるかどうかを確認します.DoesNotExist
エラー🔎 パスワードが正しいことを確認
def check_password(password, hashed_password):
return bcrypt.checkpw(password.encode('utf-8'), hashed_password)
👏 パスワードが正しい場合はtokenを送信し、結果に含めます。
유출이 되면 안된다
(Gitに提出不可)from ######.settings import SECRET_KEY, HASH_ALGORITHM
def make_user_token(id):
return jwt.encode({'user_id': id}, SECRET_KEY, algorithm=HASH_ALGORITHM)
settings.pyfrom my_settings import SECRET_KEY, DATABASES, HASH_ALGORITHM
.
.
.
HASH_ALGORITHM = HASH_ALGORITHM
Reference
この問題について(Project: westagram -2 (21.05.31)), 我々は、より多くの情報をここで見つけました https://velog.io/@burnkim61/Project-westagram-2-21.05.31テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol