Instagram Sign In
8754 ワード
今回は、Instagram Sign In Viewを作成して復習したいと思います!
なぜLog In City GETではなくPOSTを使うのですか?🤔
GETはPOSTより少し安全性が悪い
GETを使用するには、クライアントのデータをURLに入れて送信する必要があります
ex)
ParameterはURLの一部なので、最終的にはBrowser Historyでコンテンツを見ることができます
上の内容以外にもたくさんの内容があり、今必要な情報だけを整理しました!
Sign in Viewが作成されました
POST法を用いるJSONをBodyに書き込みdict に変換する.受信 のデータがある場合は、 2
前回Postingで書いたように、Signin中に
さぎょうじょうたい🔌
なぜ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
ログイン失敗時にすべてのエラーメッセージを復元
ログインプロセス
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)
bcrypt
は、データベースに格納されているPassword
と比較してEmail
であるPassword
およびJWT
を返します.Password
に該当しない場合、401 Return 実施中の特殊事項
前回Postingで書いたように、Signin中に
Password
にbcrypt
を付けずに修正できないことを確認!SUCCESS
に期限切れが加算され、時間が過ぎるとコインの期限切れが設定されます!さぎょうじょうたい🔌
すべての通信はJWT
で行われています!
正常なログインの進行状況
正常にトークンを返すことを確認できます!
エラーが発生した場合
鍵に問題が発生した場合のリカバリPassword
入力エラーの場合は、Password
またはdecode
を返します.
完了後💬
Signup viewを書く時より少し軽いので良いのですが、この部分は直接コインを獲得して、コインで承認されて、いろいろなことができるので、安全上非常に重要な部分なので、例外の処理と他の問題の発生を避けることに注意してください!
私のしたことが少し緩んでいるためかどうか分かりませんが、现业ではこれらをどのように処理するか知りたいです.足りないところは何があるか考えてみましょう.
次は私たちが発表する投稿です.🏻
質問がある部分はいつでもコメントでFEEDBACK!
Reference
この問題について(Instagram Sign In), 我々は、より多くの情報をここで見つけました
https://velog.io/@ambitiouskyle/Instagram-Sign-In
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Signup viewを書く時より少し軽いので良いのですが、この部分は直接コインを獲得して、コインで承認されて、いろいろなことができるので、安全上非常に重要な部分なので、例外の処理と他の問題の発生を避けることに注意してください!
私のしたことが少し緩んでいるためかどうか分かりませんが、现业ではこれらをどのように処理するか知りたいです.足りないところは何があるか考えてみましょう.
次は私たちが発表する投稿です.🏻
質問がある部分はいつでもコメントでFEEDBACK!
Reference
この問題について(Instagram Sign In), 我々は、より多くの情報をここで見つけました https://velog.io/@ambitiouskyle/Instagram-Sign-Inテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol