blob: 7d3a70fae8ee07aa14a0061834aeb38ec157367a [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="Date-Revision-yyyymmdd" content="20140918"/>
<meta http-equiv="Content-Language" content="en"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Cookie Interceptor</title>
<link href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic" rel="stylesheet" type="text/css">
<link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
<link href="/css/main.css" rel="stylesheet">
<link href="/css/custom.css" rel="stylesheet">
<link href="/highlighter/github-theme.css" rel="stylesheet">
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="/bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="/js/community.js"></script>
</head>
<body>
<a href="http://github.com/apache/struts" class="github-ribbon">
<img style="position: absolute; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub">
</a>
<header>
<nav>
<div role="navigation" class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" data-toggle="collapse" data-target="#struts-menu" class="navbar-toggle">
Menu
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="/index.html" class="navbar-brand logo"><img src="/img/struts-logo.svg"></a>
</div>
<div id="struts-menu" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="dropdown">
<a data-toggle="dropdown" href="#" class="dropdown-toggle">
Home<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><a href="/index.html">Welcome</a></li>
<li><a href="/download.cgi">Download</a></li>
<li><a href="/releases.html">Releases</a></li>
<li><a href="/announce.html">Announcements</a></li>
<li><a href="http://www.apache.org/licenses/">License</a></li>
<li><a href="https://www.apache.org/foundation/thanks.html">Thanks!</a></li>
<li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
</ul>
</li>
<li class="dropdown">
<a data-toggle="dropdown" href="#" class="dropdown-toggle">
Support<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><a href="/mail.html">User Mailing List</a></li>
<li><a href="https://issues.apache.org/jira/browse/WW">Issue Tracker</a></li>
<li><a href="/security.html">Reporting Security Issues</a></li>
<li class="divider"></li>
<li><a href="https://cwiki.apache.org/confluence/display/WW/Migration+Guide">Version Notes</a></li>
<li><a href="https://cwiki.apache.org/confluence/display/WW/Security+Bulletins">Security Bulletins</a></li>
<li class="divider"></li>
<li><a href="/maven/project-info.html">Maven Project Info</a></li>
<li><a href="/maven/struts2-core/dependencies.html">Struts Core Dependencies</a></li>
<li><a href="/maven/struts2-plugins/modules.html">Plugin Dependencies</a></li>
</ul>
</li>
<li class="dropdown">
<a data-toggle="dropdown" href="#" class="dropdown-toggle">
Documentation<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><a href="/birdseye.html">Birds Eye</a></li>
<li><a href="/primer.html">Key Technologies</a></li>
<li><a href="/kickstart.html">Kickstart FAQ</a></li>
<li><a href="https://cwiki.apache.org/confluence/display/WW/Home">Wiki</a></li>
<li class="divider"></li>
<li><a href="/getting-started/">Getting Started</a></li>
<li><a href="/security/">Security Guide</a></li>
<li><a href="/core-developers/">Core Developers Guide</a></li>
<li><a href="/tag-developers/">Tag Developers Guide</a></li>
<li><a href="/maven-archetypes/">Maven Archetypes</a></li>
<li><a href="/plugins/">Plugins</a></li>
<li><a href="/maven/struts2-core/apidocs/index.html">Struts Core API</a></li>
<li><a href="/tag-developers/tag-reference.html">Tag reference</a></li>
<li><a href="https://cwiki.apache.org/confluence/display/WW/FAQs">FAQs</a></li>
<li><a href="http://cwiki.apache.org/S2PLUGINS/home.html">Plugin registry</a></li>
</ul>
</li>
<li class="dropdown">
<a data-toggle="dropdown" href="#" class="dropdown-toggle">
Contributing<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><a href="/youatstruts.html">You at Struts</a></li>
<li><a href="/helping.html">How to Help FAQ</a></li>
<li><a href="/dev-mail.html">Development Lists</a></li>
<li><a href="/contributors/">Contributors Guide</a></li>
<li class="divider"></li>
<li><a href="/submitting-patches.html">Submitting patches</a></li>
<li><a href="/builds.html">Source Code and Builds</a></li>
<li><a href="/coding-standards.html">Coding standards</a></li>
<li><a href="https://cwiki.apache.org/confluence/display/WW/Contributors+Guide">Contributors Guide</a></li>
<li class="divider"></li>
<li><a href="/release-guidelines.html">Release Guidelines</a></li>
<li><a href="/bylaws.html">PMC Charter</a></li>
<li><a href="/volunteers.html">Volunteers</a></li>
<li><a href="https://gitbox.apache.org/repos/asf?p=struts.git">Source Repository</a></li>
<li><a href="/updating-website.html">Updating the website</a></li>
</ul>
</li>
<li class="apache"><a href="http://www.apache.org/"><img src="/img/apache.png"></a></li>
</ul>
</div>
</div>
</div>
</nav>
</header>
<article class="container">
<section class="col-md-12">
<a class="edit-on-gh" href="https://github.com/apache/struts-site/edit/master/source/core-developers/cookie-interceptor.md" title="Edit this page on GitHub">Edit on GitHub</a>
<a href="interceptors.html" title="back to Interceptors"><< back to Interceptors</a>
<h1 id="cookie-interceptor">Cookie Interceptor</h1>
<p>The aim of this interceptor is to set values in the stack/action based on cookie name/value of interest.</p>
<p>If an asterisk is present in <code class="highlighter-rouge">cookiesName</code> parameter, it will be assume that all cookies name are to be injected into
struts’ action, even though <code class="highlighter-rouge">cookiesName</code> is comma-separated by other values, e.g. <code class="highlighter-rouge">(cookie1,*,cookie2)</code>.</p>
<p>If <code class="highlighter-rouge">cookiesName</code> is left empty it will assume that no cookie will be injected into Struts’ action.</p>
<p>If an asterisk is present in <code class="highlighter-rouge">cookiesValue</code> parameter, it will assume that all cookies name irrespective of its value
will be injected into Struts’ action so long as the cookie name matches those specified in <code class="highlighter-rouge">cookiesName</code> parameter.</p>
<p>If <code class="highlighter-rouge">cookiesValue</code> is left empty it will assume that all cookie that match the <code class="highlighter-rouge">cookieName</code> parameter will be injected
into Struts’ action.</p>
<p>The action could implement <code class="highlighter-rouge">CookiesAware</code> in order to have a <code class="highlighter-rouge">Map</code> of filtered cookies set into it.</p>
<h2 id="parameters">Parameters</h2>
<ul>
<li><code class="highlighter-rouge">cookiesName</code> (mandatory) - Name of cookies to be injected into the action. If more than one cookie name is desired
it could be comma-separated. If all cookies name is desired, it could simply be *, an asterisk. When many cookies
name are comma-separated either of the cookie that match the name in the comma-separated list will be qualified.</li>
<li><code class="highlighter-rouge">cookiesValue</code> (mandatory) - Value of cookies that if its name matches cookieName attribute and its value matched
this, will be injected into Struts’ action. If more than one cookie name is desired it could be comma-separated.
If left empty, it will assume any value would be ok. If more than one value is specified (comma-separated) it will
assume a match if either value is matched.</li>
<li><code class="highlighter-rouge">acceptCookieNames</code> (optional) - Pattern used to check if name of cookie matches the provided pattern.</li>
</ul>
<h2 id="extending-the-interceptor">Extending the Interceptor</h2>
<ul>
<li><code class="highlighter-rouge">populateCookieValueIntoStack</code> - this method will decide if this cookie value is qualified to be populated into
the value stack (hence into the action itself)</li>
<li><code class="highlighter-rouge">injectIntoCookiesAwareAction</code> - this method will inject selected cookies (as a <code class="highlighter-rouge">java.util.Map</code>) into action
that implements <code class="highlighter-rouge">CookiesAware</code>.</li>
</ul>
<h2 id="examples">Examples</h2>
<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="c">&lt;!--
This example will inject cookies named either 'cookie1' or 'cookie2' whose
value could be either 'cookie1value' or 'cookie2value' into Struts' action.
--&gt;</span>
<span class="nt">&lt;action</span> <span class="err">...</span> <span class="nt">&gt;</span>
<span class="nt">&lt;interceptor-ref</span> <span class="na">name=</span><span class="s">"cookie"</span><span class="nt">&gt;</span>
<span class="nt">&lt;param</span> <span class="na">name=</span><span class="s">"cookiesName"</span><span class="nt">&gt;</span>cookie1, cookie2<span class="nt">&lt;/param&gt;</span>
<span class="nt">&lt;param</span> <span class="na">name=</span><span class="s">"cookiesValue"</span><span class="nt">&gt;</span>cookie1value, cookie2value<span class="nt">&lt;/param&gt;</span>
<span class="nt">&lt;/interceptor-ref&gt;</span>
....
<span class="nt">&lt;/action&gt;</span>
<span class="c">&lt;!--
This example will inject cookies named either 'cookie1' or 'cookie2'
regardless of their value into Struts' action.
--&gt;</span>
<span class="nt">&lt;action</span> <span class="err">...</span> <span class="nt">&gt;</span>
<span class="nt">&lt;interceptor-ref</span> <span class="na">name=</span><span class="s">"cookie"</span><span class="nt">&gt;</span>
<span class="nt">&lt;param</span> <span class="na">name=</span><span class="s">"cookiesName"</span><span class="nt">&gt;</span>cookie1, cookie2<span class="nt">&lt;/param&gt;</span>
<span class="nt">&lt;param</span> <span class="na">name=</span><span class="s">"cookiesValue"</span><span class="nt">&gt;</span>*<span class="nt">&lt;/param&gt;</span>
<span class="nt">&lt;interceptor-ref&gt;</span>
...
<span class="nt">&lt;/action&gt;</span>
<span class="c">&lt;!--
This example will inject cookies named either 'cookie1' with value
'cookie1value' or 'cookie2' with value 'cookie2value' into Struts'
action.
--&gt;</span>
<span class="nt">&lt;action</span> <span class="err">...</span> <span class="nt">&gt;</span>
<span class="nt">&lt;interceptor-ref</span> <span class="na">name=</span><span class="s">"cookie"</span><span class="nt">&gt;</span>
<span class="nt">&lt;param</span> <span class="na">name=</span><span class="s">"cookiesName"</span><span class="nt">&gt;</span>cookie1<span class="nt">&lt;/param&gt;</span>
<span class="nt">&lt;param</span> <span class="na">name=</span><span class="s">"cookiesValue"</span><span class="nt">&gt;</span>cookie1value<span class="nt">&lt;/param&gt;</span>
<span class="nt">&lt;/interceptor-ref&gt;</span>
<span class="nt">&lt;interceptor-ref</span> <span class="na">name=</span><span class="s">"cookie"</span><span class="nt">&gt;</span>
<span class="nt">&lt;param</span> <span class="na">name=</span><span class="s">"cookiesName"</span><span class="err">&lt;cookie2&lt;/param</span><span class="nt">&gt;</span>
<span class="nt">&lt;param</span> <span class="na">name=</span><span class="s">"cookiesValue"</span><span class="nt">&gt;</span>cookie2value<span class="nt">&lt;/param&gt;</span>
<span class="nt">&lt;/interceptor-ref&gt;</span>
....
<span class="nt">&lt;/action&gt;</span>
<span class="c">&lt;!--
This example will inject any cookies regardless of its value into
Struts' action.
--&gt;</span>
<span class="nt">&lt;action</span> <span class="err">...</span> <span class="nt">&gt;</span>
<span class="nt">&lt;interceptor-ref</span> <span class="na">name=</span><span class="s">"cookie"</span><span class="nt">&gt;</span>
<span class="nt">&lt;param</span> <span class="na">name=</span><span class="s">"cookiesName"</span><span class="nt">&gt;</span>*<span class="nt">&lt;/param&gt;</span>
<span class="nt">&lt;param</span> <span class="na">name=</span><span class="s">"cookiesValue"</span><span class="nt">&gt;</span>*<span class="nt">&lt;/param&gt;</span>
<span class="nt">&lt;/interceptor-ref&gt;</span>
...
<span class="nt">&lt;/action&gt;</span>
</code></pre></div></div>
</section>
</article>
<footer class="container">
<div class="col-md-12">
Copyright &copy; 2000-2018 <a href="http://www.apache.org/">The Apache Software Foundation </a>.
All Rights Reserved.
</div>
<div class="col-md-12">
Apache Struts, Struts, Apache, the Apache feather logo, and the Apache Struts project logos are
trademarks of The Apache Software Foundation.
</div>
<div class="col-md-12">Logo and website design donated by <a href="https://softwaremill.com/">SoftwareMill</a>.</div>
</footer>
<script>!function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (!d.getElementById(id)) {
js = d.createElement(s);
js.id = id;
js.src = "//platform.twitter.com/widgets.js";
fjs.parentNode.insertBefore(js, fjs);
}
}(document, "script", "twitter-wjs");</script>
<script src="https://apis.google.com/js/platform.js" async="async" defer="defer"></script>
<div id="fb-root"></div>
<script>(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
</body>
</html>