Instagram Sign In


今回は、Instagram Sign In Viewを作成して復習したいと思います!

なぜLog In City GETではなくPOSTを使うのですか?🤔


まだまだ勉強になっていない場合は、SSLに関わらずGETとPOSTの中からどちらかを選ぶ必要があります!
実は初めてLogInを実現するときにGETを使えばいいのですが、なぜかPOSTを使うのです!
GETを使ってメッセージ自体を送信したり、ログイン時にトークンを受信したりできるのではないでしょうか.考えてみると、まず他の人がやったのでPOSTを使いましたが、原因を知りたいので探しました.

  • GETはPOSTより少し安全性が悪い

  • GETを使用するには、クライアントのデータをURLに入れて送信する必要があります
    ex) [email protected]&password=q1w2e3r4t5

  • ParameterはURLの一部なので、最終的にはBrowser Historyでコンテンツを見ることができます
  • 上の内容以外にもたくさんの内容があり、今必要な情報だけを整理しました!추가 정보 링크 > リンク1 リンク2

    Sign in Viewが作成されました


    Signup Viewより簡単!

    SignViewコード👇🏻

    class SigninView(View):
        def post(self, request):
            data = json.loads(request.body)
            try:
                user = User.objects.get(email=data['email'])
                if bcrypt.checkpw(
                    data['password'].encode('utf-8'), 
                    user.password.encode('utf-8')
                    ):
                    encoded_jwt = jwt.encode(
                        {
                            'user_id' : user.pk,
                            'exp'     : 
                            timezone.localtime() + timezone.timedelta(days=3)
                        }, 
                        SECRET_KEY, 
                        algorithm='HS256'
                    )
                    return JsonResponse({'MESSAGE':'SUCCESS', 'ACCESS_TOKEN':encoded_jwt}, status=200)
    
                return JsonResponse({'MESSAGE':'INVALID_USER'}, status=401)
    
            except MultipleObjectsReturned:
                return JsonResponse({'MESSAGE':'INVALID_USER'}, status=401)
    
            except User.DoesNotExist:
                return JsonResponse({'MESSAGE':'INVALID_USER'}, status=401)
    
            except KeyError:
                return JsonResponse({'MESSAGE':'KEY_ERROR'}, status=400)

    実施内容


    検出有効性の使用
    ログイン先
    ┑┑┑を使用してユーザートークンを作成する
    ログイン成功時200 SUCCESS
    ログイン失敗時にすべてのエラーメッセージを復元

    ログインプロセス

  • POST法を用いるJSONをBodyに書き込みdict
  • に変換する.
  • 受信bcryptは、データベースに格納されているPasswordと比較してEmailである
  • のデータがある場合は、PasswordおよびJWTを返します.
  • 2Passwordに該当しない場合、401 Return
  • 実施中の特殊事項


  • 前回Postingで書いたように、Signin中にPasswordbcryptを付けずに修正できないことを確認!
  • SUCCESSに期限切れが加算され、時間が過ぎるとコインの期限切れが設定されます!
  • さぎょうじょうたい🔌


    すべての通信はJWTで行われています!

    正常なログインの進行状況



    正常にトークンを返すことを確認できます!

    エラーが発生した場合



    鍵に問題が発生した場合のリカバリPassword
    入力エラーの場合は、Passwordまたはdecodeを返します.

    完了後💬


    Signup viewを書く時より少し軽いので良いのですが、この部分は直接コインを獲得して、コインで承認されて、いろいろなことができるので、安全上非常に重要な部分なので、例外の処理と他の問題の発生を避けることに注意してください!
    私のしたことが少し緩んでいるためかどうか分かりませんが、现业ではこれらをどのように処理するか知りたいです.足りないところは何があるか考えてみましょう.
    次は私たちが発表する投稿です.🏻
    質問がある部分はいつでもコメントでFEEDBACK!