ログイン要求を行うときに使用するhttpメソッドを知りたいのですが、なぜですか?このリクエストはサーバー上にオブジェクト(ユーザーセッション)を作成するため、POSTである必要があると思いますが、どう思いますか?しかし、ログインリクエストはべき等である必要があるため、PUTである可能性があります。
ログアウトリクエストにも同じ質問がありますが、DELETEメソッドを使用する必要がありますか?
ログイン要求がユーザー名とパスワードを提供するユーザーを介している場合は、POSTが望ましいです。詳細はURLではなくHTTPメッセージの本文で送信されます。 https経由で暗号化する場合を除き、テキスト。
HTTP DELETEメソッドは、サーバー上の何かを削除する要求です。メモリ内のユーザーセッションを削除することは、実際には意図していることではないと思います。さらに、ユーザーレコード自体を削除するためです。したがって、潜在的なログアウトは単にGETになります。 www.yoursite.com/logout。
LOGIN&LOGOUTメソッドを基本的なCRUD操作CREATE&DELETEに変換できると思います。 SESSIONと呼ばれる新しいリソースを作成し、ログアウト時にそれを破棄しているため:
IMGタグまたはそのようなIMGタグが存在するWebサイトへのリンクを含むメールを送信するだけで誰でも攻撃を仕掛けることができるため、GETとしてログアウトすることはありません。 (<img src="youtsite.com/logout" />
)
追伸長い間、どのようにRESTfulログイン/ログアウトを作成するのか疑問に思っていましたが、それは本当に簡単だとわかりました、あなたは私が説明したようにそれを行います:use/ session /CREATEおよびDELETEメソッドを使用したエンドポイントで問題ありません。また、何らかの方法でセッションを更新する場合は、UPDATEを使用できます...
ここでは、RESTガイドと推奨事項に基づいた私のソリューションです:
[〜#〜] login [〜#〜]-リソースを作成する
要求:
POST => https://example.com/sessions/
BODY => {'login': '[email protected]', 'password': '123456'}
応答:
http status code 201 (Created)
{'token': '761b69db-ace4-49cd-84cb-4550be231e8f'}
[〜#〜] logout [〜#〜]-リソースを削除する
要求:
DELETE => https://example.com/sessions/761b69db-ace4-49cd-84cb-4550be231e8f/
応答:
http status code 204 (No Content)
ログアウト方法について:
Spring(Java Framework)のドキュメントでは、POSTリクエストが推奨されています。GETによりCSRFに対して脆弱になり、ユーザーがログアウトされる可能性があるためです。
CSRFを追加すると、LogoutFilterが更新され、HTTP POSTのみが使用されます。これにより、ログアウトにCSRFトークンが必要になり、悪意のあるユーザーがユーザーを強制的にログアウトできなくなります。
ログインにもPOSTを使用する必要があります(本体は暗号化できます。他の回答を参照してください)。
ログインリクエストには、POSTメソッドを使用する必要があります。ログインデータはセキュリティで保護されているため、セキュリティが必要です。使用すると、POSTメソッドしかし、GETメソッドでは、データがサーバーに送信され、その後に、すべての人に表示されるurlリクエストを伴うappendのようなurlが続きます。
したがって、安全な認証および承認プロセスのために、POSTメソッドを使用する必要があります。
このソリューションがお役に立てば幸いです。
ありがとう