2016-12-25 10 views
0

簡単な質問:ウェブサイトで自分のアカウントにログインすると、ログインしたままで別のページにアクセスしたときに何度もログインしないでください。ウェブサイトはどのようにログインしていますか

+3

詳細を投稿してください。あなたは長い間、またはすべてのページのユーザーのシステムへのログインを維持しようとしていますか?クリアしてください。 –

+0

彼らは基本的にクッキーの有効期限を非常に遠い将来に選択します – Viney

+0

クイックアンサー。クッキーに最初にログインした後にトークンを保存します。その後、ユーザーはトークンを再び認証します。クッキーの有効期限を希望する時間(たとえば、日/週/年)に設定する必要があります –

答えて

1

を学ぶことができます。コンピュータサイエンスの

Source

、特定のネットワークでは、セッションは、2つの以上の通信 間の対話、会話や会議、として知られている、 半永久的な対話型情報交換でありますデバイス間、またはコンピュータとユーザーの間 Webサーバーセッション管理 ... HTTP(Hypertext Transfer Protocol)はステートレスです。クライアントコンピュータ Webブラウザを実行すると、新しい送信制御を確立する必要があります Proto Webサーバーへのネットワーク(TCP)ネットワーク接続のそれぞれに新しいHTTP GETまたはPOST要求が追加されました。したがって、Webサーバーは、 確立されたTCPネットワーク接続に、単一のHTTP GET またはPOST操作より長い間は依存することはできません。セッション管理は、Web 開発者がステートレスHTTPプロトコルサポートセッション状態にするために使用する手法です。 たとえば、ユーザーがWebサーバーに対して認証されると、 ユーザーの次のHTTP要求(GETまたはPOST)によって、Webサーバー はユーザーのアカウントとパスワードを再度要求しません。複数のWebサーバが セッション状態の知識を共有しなければならない状況では、この参照HTTPクッキーとセッションID

を達成するために使用 方法の議論について(クラスタ環境では典型的であるように)セッション 情報は間で共有されなければなりません Webサーバーソフトウェアを実行しているクラスタノード。クラスタ内でノード間でセッション状態を共有する方法 クラスタ内でセッション情報をマルチキャストする方法 (この手法の例としてはJGroupsを参照)、分散共有メモリを使用してパートナーノードと 情報を共有する、またはセッションを共有する ネットワークソケットを使用するノード間の情報、分散ファイルシステムまたはグローバルファイルシステムなどの共有ファイルシステム にセッション情報を格納すること、またはクラスタ外のセッション情報をデータベースに格納すること。

セッション情報は トランザクションの否認防止のために必要とされず、セッション情報 を記憶する任意の方法を用いることができ、次いで、コンプライアンス監査の対象となる データを含まない過渡、揮発性データであると考えられる場合。ただし、セッション情報が監査 に準拠している場合は、 セッション記憶域、レプリケーション、およびクラスタリングに使用される方法を考慮する必要があります。サービス指向アーキテクチャでは

、拡張マークアップ言語(XML)で構成簡易オブジェクトアクセスプロトコルまたは SOAPメッセージ メッセージは、セッションを作成 にWebサーバを引き起こすために民生用アプリケーションで使用することができます。生のPHPで

セッションを管理したい場合は、上に

session_start(); 

手順を含める必要が(あなたがそれを心配べきではありませんので、最もよく知られているフレームワークは、セッション管理ミドルウェアを持っています)あなたのページのこれを行うと、24分(1440秒)のセッション(by default)が作成されます。

php.iniファイルから任意の整数に変更できます。

すべてのセッションデータは、$_SESSIONグローバルに格納されています。したがって、それはあなたがあなたのアプリケーションのいずれかの時点でのように、

$_SESSION['user_name'] = 'ernesto'; 
$_SESSION['foo'] = 'bar'; 
... 

セッション変数(あなたが欲しいaanything)を設定することができますので、あなたは、$ _SESSION変数、

session_unset(); 

想定を削除することができ、配列であります上記の変数を既に設定しています。

print_r($_SESSION); 

は、未設定の手順で変数を削除したので、空の配列を出力します。

あなたは完全にセッションを破棄したい場合は、

session_destroy(); 

はあなたのためにそれを行います。

2

Htmlページはステートレスです。つまり、ページを更新すると、すべてのデータが前回のサーバーから送信されたため、もう一度リクエストする必要があります。

ブラウザにデータを保存するさまざまな方法があります。つまり、Cookiesです。

初めてログインすると、このページにはログインDataがブラウザに保存されているため、ページを更新したり最新表示したりすると、そのページにはData(存在する場合)でログインしようとします。それ以外の場合は、再度ログインデータを入力する必要があります。

ブラウザキャッシュをクリアするだけで簡単にテストできます。あなたがを学ぶことができます

-1

使用クッキー:CookieまたはSession あなたはそれがすべてのセッションについてですSession

0

Cookieとセッションは、認証の詳細がブラウザに保存される従来の方法の一部です。しかし、これらのアプローチを通じて、サーバはログインしたユーザとそのクッキーを検証して追跡する必要があります。したがって、ログインしたユーザーを管理するにはサーバー操作がいくつかあります。
しかし、JWTというJSON Web Tokenという新しいアプローチがあります。ここでサーバはユーザ固有のトークンを生成し、ロギングの瞬間にブラウザクライアントに送信します。ブラウザはこのトークンをHTML5ローカルストレージまたはセッションストレージに保存し、すべてのリクエストでこのトークンを送信します。
ここで、すべてのリフレッシュブラウザコードで、ローカルストレージまたはセッションストレージでこのトークンの可用性をチェックできます。このアプローチの利点は、発行されたトークンを追跡する必要がなく、必要に応じてトークンからデータを抽出できることです。
このJWTは、高度なJavascriptフレームワークを使用して開発されたWebアプリケーションの認証に幅広く使用されています:AngularjsまたはReactjs(ライブラリをサポートする)

関連する問題