ログイン機能の実装 次に、login.css を作成し、スタイル ID をコンテンツとして、static の下の css ディレクトリに保存します。
login.htmlログインページを作成する
前の部分はフロントエンドです。バックエンドのコードを書き終えましょう。 UserRepository に次のメソッド定義を追加します。
UserService および実装クラスに次のメソッドが追加されます。
UserController に次のメソッドを追加します。
プロジェクトを開始するには、 http://localhost:8080/ログインページ ログインページに移動します。 ユーザー名とパスワードを入力してください。パスワードが間違っています: 正しいユーザー名とパスワードを入力すると、ユーザー リストにリダイレクトされます。 このようにして、シンプルなログイン機能が実現します。 ユーザー情報を変更するときに、ログインしているかどうかを確認する必要がある場合はどうすればよいですか? インターセプター カスタム インターセプターを作成し、HandlerInterceptor インターフェイスを実装します。
WebMvcConfiguraeAdapter を継承し、addInterceptor メソッドをオーバーライドする Java クラスを作成します (このクラスは、構成インターセプターを追加し、このクラスに構成インターセプターを追加し、フィルタリングを構成するために使用されます)。
次に、ログイン コントローラー メソッドを調整し、セッション情報を保存します。
ユーザー リストに再度アクセスします。 http://localhost:8080/ユーザーリスト このとき、ユーザー情報を変更する機能にアクセスし、ログインページにジャンプします。 ログイン後、再度ユーザー情報の変更機能にアクセスしてください。 これにより、ユーザー情報の変更ページが表示されます。 この時点で、検証を受信するための簡単なセッションを実装しました。 サーバーが再起動されると、セッションはサーバー上に保存され、サーバー メモリ内に残っているため、セッションは失われます。 セッション分散には4つのソリューションがあります ソリューション 1: クライアント ストレージ 情報をクッキーに直接保存します。 Cookie はクライアントに保存される小さなデータです。クライアントは http プロトコルを介してサーバーと対話し、通常は機密性のない情報を保存するために使用されます。 欠点
解決策2: セッションレプリケーション セッション レプリケーションは、小規模なエンタープライズ アプリケーションで広く使用されているサーバー クラスター セッション管理メカニズムです。実際の開発では広く使用されていません。これは、Web サーバー (Tomcat など) 用のクラスターを構築することによって実現されます。 欠点 セッション同期の原理は、同じ LAN 内でブロードキャストを送信することにより、セッションを非同期的に同期することです。サーバーの数が増え、それらが同時に接続されると、セッションで同期する必要があるデータの量が多くなります。他のサーバー上のすべてのセッションをこのサーバーに同期する必要があり、これにより一定のネットワーク オーバーヘッドが発生します。特にユーザー数が多い場合はメモリ不足が発生する場合があります。 アドバンテージ サーバー間のセッション情報は同期されます。いずれかのサーバーがダウンしても、他のサーバーのセッションの状態には影響しません。構成は比較的シンプルです。 Tomcat はすでに分散アーキテクチャの開発および管理メカニズムをサポートしています。 Tomcat の設定を変更してセッション レプリケーションをサポートし、クラスター内の複数のサーバー間でセッション オブジェクトを同期して、各サーバーがすべてのユーザーのセッション情報を保存できるようにすることができます。この方法では、ローカル マシンのダウンタイムによってセッション データが失われることはなく、サーバーがセッションを使用する場合は、ローカル マシン上でセッションを取得するだけで済みます。 設定方法は? Tomcat インストール ディレクトリの下の config ディレクトリにある server.xml ファイルで、コメントを開きます。 Tomcat は同じゲートウェイに存在する必要があります。そうでない場合、ブロードキャストを受信できず、セッションを同期できません。 web.xml でセッション レプリケーションを有効にします。 解決策3: セッションバインディング: Nginxは、無料のオープンソースの高性能HTTPサーバーおよびリバースプロキシサーバーです。 Nginx で何ができるのでしょうか? リバースプロキシ、負荷分散、http サーバー (動的および静的プロキシ)、フォワードプロキシ セッションバインディングに nginx を使用する方法 nginx のリバース プロキシと負荷分散を使用します。以前は、クライアントは処理のためにいずれかのサーバーに割り当てられていました。割り当てられる特定のサーバーは、サーバーの負荷分散アルゴリズム (ポーリング、ランダム、IP ハッシュ、重みなど) によって異なります。ただし、nginx の ip-hash 戦略に基づいてクライアントとサーバーをバインドすることはできます。このサーバーには同じクライアントのみがアクセスでき、クライアントが何度リクエストを送信しても、同じサーバーによって処理されます。 欠点 単一障害点が発生しやすくなります。 1 台のサーバーがダウンすると、そのサーバー上のセッション情報は失われます。 フロントエンドでは負荷分散を行うことができません。そうすると、セッションバインディングに問題が生じます アドバンテージ
ソリューション4: Redisベースのセッションストレージソリューション アドバンテージ
欠点 もう 1 つのネットワーク呼び出しがあり、Web コンテナーは Redis にアクセスする必要があります。 通常、Web コンテナが配置されているサーバーと Redis が配置されているサーバーは、ネットワークのオーバーヘッドを削減し、イントラネットを介して接続するために、同じコンピュータ ルームに配置されます。 出典: http://45dwz.com/xeP0J Redis ベースの分散ストレージ セッション ソリューションの実装 ここではRedisのインストール方法については説明しません。インストール方法が分からない場合はご連絡ください。 Redis 統合 依存関係の追加
Redis設定を追加する
Redisにセッションを追加する スタートアップ クラスに @EnableRedisHttpSession アノテーションを追加します。
プロジェクトを開始し、再度ログインするとRedisで見つかります プロジェクトを再度再起動したところ、ユーザー情報を変更するときに再度ログインする必要がないことがわかりました。 この時点で、Redis 分散ストレージ セッション ソリューションは完了です。 要約する この記事では、まずログイン機能を実装し、次に検証セッションのインターセプト処理を実装し、次に 4 つのセッション分散ソリューションをまとめ、最後に Redis セッション ストレージに基づくソリューションを実装します。 この記事はWeChat公開アカウント「Java Backend Technology Full Stack」から転載したものです。以下のQRコードからフォローできます。この記事を転載する場合は、Java Backend Technology Full Stack パブリック アカウントにお問い合わせください。 |
<<: Hongmeng HarmonyOS 開発中の分散フロー開発における一般的なエラーに関する FAQ
>>: ハイブリッド マルチクラウドの旅におけるビジネス継続性
1. マイクロソフトは、IEブラウザのせいで合意を履行できなかったとしてEUから多額の罰金を科せられ...
ここが実践の場です。アクションリクエストボタンは、Web トラフィックを商業価値に変換する上でどの程...
新浪科技報、北京時間5月29日朝のニュースによると、元モルガン・スタンレーのインターネットアナリスト...
最近、Amazon Web Services は、自社開発チップ Amazon Trainium を...
みなさんこんにちは。梁磊です。SEOデータ風向計は皆さんもよくご存知でしょう。SEOデータ風向計を分...
仮想化テクノロジーはクラウド コンピューティング プラットフォームの基盤です。その目的は、物理的なコ...
昨年6月の「百度地震」から今年の「青大根アルゴリズム2.0」まで、百度はいくつかの大きなアップデート...
Taobao 検索ランキングの最適化は、Taobao SEO とも呼ばれ、Taobao ストアを開設...
ホストキャットをフォローしたいけれど、毎日ブログを読む時間があまりないという友人のために、ホストキャ...
12月28日、一部のメディアはヴィヤの夫である董海鋒氏の写真を撮影しており、現在は彼がヴィヤのその後...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスWeiboマーケティング...
HTML の明日は晴れでしょうか、それとも雨でしょうか?王淮(元Facebook決済バックエンドおよ...
2022年11月、51CTO主催の「中国企業『IT印象◆革新の勢いを刺激し、デジタル時代の金鉱を掘り...
今日までのローカル Web サイトの開発は数え切れないほどの困難を乗り越え、その粘り強い活力を証明し...
このブログの本来の目的は、Kubernetes クラスターをゼロから構築する方法を説明することです。...