私は多くのオープンソース Web サイトを見てきましたが、ログインしたユーザーを記憶するためにさまざまな方法を使用しており、Cookie のみを使用するものもあれば、Cookie とデータベースを使用するものもあります。各方法の違いは何ですか? 使用する最良の方法は何ですか?
セキュリティ上の理由があると思いますが、理解できる人はいますか?
ユーザーの訪問を記憶するには、Cookie を使用する必要があります。DBではできません。
セッション変数は、セッションの間だけ持続します。たとえば、セッション変数を使用すると、翌日にはユーザーを「覚えていません」。
ユーザーに関する情報を永続的に保存するには、DB が必要です。「remember me」機能自体には必要ありません。たとえば、ユーザーについて知る必要があるのは名前だけである場合は、それを Cookie 自体に保存することもできます。ユーザーが戻ってくると、その名前が Cookie に含まれており、'Welcome foo' と言うのに使用できます。ただし、たとえばページがメール クライアントの場合、すべてのユーザーのメールを Cookie に保存することはできません。とにかく意味があるというわけではありません。このシナリオでは、Cookie からログイン資格情報を取得し、ログインしているユーザーをマークしてから、DB にアクセスしてメールを取得します。
すべての "remember me" 機能には、後でユーザーを識別できるように、Cookie またはその他の方法でユーザーのコンピューターに少しの情報を残す必要があります。次に、サーバー上でユーザーを識別するのに役立つこの情報を取得し、ユーザーをシステムに再度ログインさせるために必要なことを行います。
Cookie はユーザーのコンピューターにローカルに保存されるため、より高速です。
データベースでは、データを取得するためにサーバーに接続する必要があります。
より包括的なガイドについては、この質問を参照してください。
Cookie はその時点では更新されませんが、それ以外の場合はセッションが更新されます。そのため、ユーザーを記憶する最善の方法は、セッション ID とデータベースを使用することだと思います