ログイン機能の実装 次に、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
>>: ハイブリッド マルチクラウドの旅におけるビジネス継続性
なぜ Windows Vista のようなキーワードを選択するのでしょうか?少し考えてみると、このキ...
[[221381]] 「クラウドコンピューティング」という用語は、2007 年以来、国内でよく使われ...
序文異常なウェブサイトトラフィックは、外部原因と内部原因に大別できます。外部的な理由には、検索エンジ...
ドメイン名登録のより安いオファーはありませんか? .org ドメイン名を試してみるのもいいかもしれま...
過去 1 か月間、Baidu が多くのウェブマスターを落胆させたことは認めざるを得ません。主要なウェ...
「BanwagonHost: 新しい 10Gbps 帯域幅 cn2 gia ライン VPS、Chin...
2019年へのカウントダウンが始まりました。クラウド コンピューティング市場を振り返ると、変化と課題...
外部リンクは、SEO の中核から切り離せないトピックです。外部リンクソースの選択方法、外部リンク計画...
最近では、ウェブサイトのリンク構築における不正行為は大幅に抑制されています。以前は、多くのウェブサイ...
数回の大規模なKステーション調整の後、Baiduは本日、さらに大きなアップデートを実施しました。まず...
fortvps.com は今年設立された新しいホスティング会社です。公式ウェブサイトには会社の住所と...
前回 SEO のヒントをお伝えしてから 1 週間が経ちました。もちろん、前回の約束は忘れていません。...
外部リンクの構築は、常に SEO 担当者の仕事の焦点でした。不正な外部リンクとスパム外部リンクは、B...
みなさんこんにちは。長い間記事を投稿していませんでした。今日は、6月22日にBaiduに降格された一...
編集者のウェブサイト「スマートホームネットワーク」を例に挙げてみましょう最近、BaiduやGoogl...