春ブーツでクッキーを使用する方法

春ブーツでクッキーを使用する方法

I.はじめに

この記事の輪郭

  • HTTPクッキーを読みます
  • セットHTTPクッキー
  • ] [すべてのCookieを読みます
  • クッキーの有効期限を設定します
  • HTTPS与クッキー
  • HttpOnlyのクッキー
  • クッキーを削除します

(とも呼ばれるHTTPクッキークッキーウェブブラウザのクッキーは)サーバーのユーザーのブラウザに保存されたデータのごく一部です。サーバー側のアプリケーションがクッキーを設定し、ブラウザがバックブラウザ要求応答時間、それらは自動的にサーバ側のアプリケーションへの要求とともに送信されている次の時間にクッキーを格納します。

クッキーは、サイト全体でユーザー設定(テーマ、受け入れプライバシーポリシー)とトラックのユーザーの行動を覚えておくことは、サーバーとのセッションを管理するためのブラウザ(ログイン、ショッピングカート、ゲームのスコア)との間で情報を交換する方法を提供します。クッキーある程度、サーバ側の圧力の解放、データの一部がブラウザに保存されているので、データのこの部分は、データセキュリティのアプリケーションに関与することができないからです。この記事では、我々は春ブートアプリケーション、設定を読み込み、およびHTTPクッキーを削除する方法を学びます。

スプリング・フレームワークが提供する@CookieValueHTTPクッキーの値を取得するために注釈を、このアノテーションは、メソッドパラメータのコントローラに直接使用することができます。



@GetMapping("/")
public String readCookie(@CookieValue(value = "username", 
                                      defaultValue = "Atta") String username) {
    return "Hey! My username is " + username;
}

上記のコードセグメントでは、注意してくださいdefaultValue = "Atta"ユーザー名のデフォルト値を設定しないと、クッキーの名前が見つからなかった場合は、春がスローされますjava.lang.IllegalStateException例外を。

春ブーツでクッキーを設定するには、我々が使用することができますHttpServletResponseクラスのメソッドをaddCookie()新しい作成されて行う必要があるCookieオブジェクトを、レスポンスに追加します。


@GetMapping("/change-username")
public String setCookie(HttpServletResponse response) {
    // 创建一个 cookie对象
    Cookie cookie = new Cookie("username", "Jovan");

    //将cookie对象加入response响应
    response.addCookie(cookie);

    return "Username is changed!";
}

第四に、] [すべてのCookieを読みます

使用に加えて@CookieValue、注釈を、我々はまた、使用することができHttpServletRequest、すべてのクッキーを読み取るために、メソッドのパラメータコントローラとしてクラスを。このクラスは提供するgetCookies()配列としてブラウザによって送信されたすべてのクッキーを返すメソッドを、。


@GetMapping("/all-cookies")
public String readAllCookies(HttpServletRequest request) {

    Cookie[] cookies = request.getCookies();
    if (cookies != null) {
        return Arrays.stream(cookies)
                .map(c -> c.getName() + "=" + c.getValue())
                .collect(Collectors.joining(", "));
    }

    return "No cookies";
}

第五に、クッキーの有効期限を設定します

クッキーの有効期限を指定しない場合、セッションが期限切れになるまで、そのライフサイクルは継続されます。このようなクッキーが呼び出されるセッションクッキーユーザーがブラウザを閉じるか、そのクッキーをクリアするまでセッションクッキーはアクティブのまま。しかし、あなたは、このデフォルトの動作をオーバーライドしたクラスを使用することができますsetMaxAge()クッキーの有効期限を設定する方法を。


// 创建一个 cookie对象
Cookie cookie = new Cookie("username", "Jovan");
cookie.setMaxAge(7 * 24 * 60 * 60); // 7天过期

//将cookie对象加入response响应
response.addCookie(cookie);

さて、usernameクッキーの有効期限が切れSeesionを終了しませんが、次の7日間有効のままになります。渡されたsetMaxAge()秒単位の方法の有効期限。有効期限の日付と時刻は、クライアント・サーバの観点ではなく、クッキーを設定して相対的です。

六、HTTPSとクッキー

私たちは、概念を理解する必要があります。クッキーのセキュリティとは何ですか?セキュリティクッキーのみを暗号化されたHTTPS経由で接続することができますクッキーサーバに送信されます。クッキー暗号化されていないHTTPを送信するためにサーバーに接続できません。あなたはsetSecure(true)を設定した場合、つまり、クッキーは、HTTP接続、HTTPSのみ接続伝送を送信されません。


// 创建一个 cookie对象
Cookie cookie = new Cookie("username", "Jovan");
cookie.setSecure(true);  //Https 安全cookie

//将cookie对象加入response响应
response.addCookie(cookie);

HttpOnlyのクッキーは、クロスサイトスクリプティング(XSS)攻撃を防ぐために使用され、そのは、HTTPのみクッキーは、JavaScriptのすることはできません設定されているDocument.cookieサービスにアクセスするためにサーバによってのみ最後に、APIへのアクセス。


// 创建一个 cookie对象
Cookie cookie = new Cookie("username", "Jovan");
cookie.setHttpOnly(true);  //不能被js访问的Cookie

//将cookie对象加入response响应
response.addCookie(cookie);

八、クッキーを削除

クッキーを削除するには、する必要がMax-Age0に設定し、クッキーの値はnullです。しないでくださいMax-Ageに値をコマンド-1負の数。そうでなければ、ブラウザはセッションクッキーとして扱います。


// 将Cookie的值设置为null
Cookie cookie = new Cookie("username", null);
//将`Max-Age`设置为0
cookie.setMaxAge(0);

response.addCookie(cookie);

あなたの注意を楽しみにして

おすすめ

転載: www.cnblogs.com/zimug/p/11785225.html