GithubHelp home page GithubHelp logo

cookie-manager's Introduction

cookie-manager

CookieManagerは、Cookie生成を行うために使用するAPIです。

初期設定を行って構築したCookieManagerのインスタンスを利用することで、 Cookie生成時にありがちなパスやドメインの設定忘れ/間違いを軽減することが可能となります。 また、HttpOnly属性をサポートしていない環境でも、HttpOnlyの属性を出力することが可能です。

インストール

mavenから取得できます。pomファイルのdependenciesに次の用に追加してください。

<dependency>
    <groupId>net.jp.saf.http.cookie</groupId>
    <artifactId>cookie-manager</artifactId>
    <version>0.1.0</version>
</dependency>

初期設定

使用する環境に合わせて、net.jp.saf.http.cookie.impl.CookieManagerImplクラスを構築して下さい。

Seasar2の場合、次のようにdiconファイルを作成して下さい。

<component name="cookieManager" class="net.jp.saf.http.cookie.impl.CookieManagerImpl">
    <property name="domain">"example.com"</property>
    <property name="path">"/foo/"</property>
    <property name="maxAge">-1</property>
    <property name="secure">false</property>
    <property name="httpOnly">false</property>
</component>

使い方

net.jp.saf.http.cookie.CookieManagerインタフェースを経由して、Cookie操作を行います。

Seasar2の例です。

CookieManager cookieManager = SingletonS2Container.getComponent("cookieManager");
HttpServletResponse response = ResponseUtil.getResponse();
// Cookieの出力
cookieManager.cookie("sample1").value("baa").write(response);
→sample1というCookieが出力されます。value以外の省略したパラメータは、初期設定した値が自動で設定されます。
レスポンスヘッダーには、次のように出力されます。
「Set-Cookie: sample1=baa; Domain=example.com; Path=/foo/」


cookieManager.cookie("sample2").value("boo").secure().httpOnly().write(response);
→別途設定した値は、設定値を上書きします。
「Set-Cookie: sample2=boo; Domain=example.com; Path=/foo/; Secure; HttpOnly」


//文字列での取得
String sample3 = cookieManager.cookie("sample3").value("bee").maxAge(3600).httpOnly().toHeaderString();
→「sample3=bee; Expires=Sun, 03-Feb-2013 10:54:08 GMT; Path=/foo/; Domain=example.com; HttpOnly」が取得できます。

HttpOnlyのサポート

Tomcat6のように、ServletAPIのバージョンによってHttpOnlyの属性が使えないコンテナでもHttpOnlyを出力します。 これは、実行環境のjavax.servlet.http.CookieがHttpOnlyのsetter/getterを持っていない場合、 Cookie出力値を文字列で取得し、HttpServletResponseにaddHeaderすることで実現しています。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.