<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head><meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>DefaultWebSessionManager xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../../apidocs/org/apache/shiro/web/session/mgt/DefaultWebSessionManager.html">View Javadoc</a></div><pre>
<a class="jxr_linenumber" name="L1" href="#L1">1</a>   <em class="jxr_comment">/*</em>
<a class="jxr_linenumber" name="L2" href="#L2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
<a class="jxr_linenumber" name="L3" href="#L3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
<a class="jxr_linenumber" name="L4" href="#L4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
<a class="jxr_linenumber" name="L5" href="#L5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
<a class="jxr_linenumber" name="L6" href="#L6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
<a class="jxr_linenumber" name="L7" href="#L7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
<a class="jxr_linenumber" name="L8" href="#L8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
<a class="jxr_linenumber" name="L9" href="#L9">9</a>   <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="L10" href="#L10">10</a>  <em class="jxr_comment"> *     <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
<a class="jxr_linenumber" name="L11" href="#L11">11</a>  <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="L12" href="#L12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing,</em>
<a class="jxr_linenumber" name="L13" href="#L13">13</a>  <em class="jxr_comment"> * software distributed under the License is distributed on an</em>
<a class="jxr_linenumber" name="L14" href="#L14">14</a>  <em class="jxr_comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a class="jxr_linenumber" name="L15" href="#L15">15</a>  <em class="jxr_comment"> * KIND, either express or implied.  See the License for the</em>
<a class="jxr_linenumber" name="L16" href="#L16">16</a>  <em class="jxr_comment"> * specific language governing permissions and limitations</em>
<a class="jxr_linenumber" name="L17" href="#L17">17</a>  <em class="jxr_comment"> * under the License.</em>
<a class="jxr_linenumber" name="L18" href="#L18">18</a>  <em class="jxr_comment"> */</em>
<a class="jxr_linenumber" name="L19" href="#L19">19</a>  <strong class="jxr_keyword">package</strong> org.apache.shiro.web.session.mgt;
<a class="jxr_linenumber" name="L20" href="#L20">20</a>  
<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.shiro.session.ExpiredSessionException;
<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.shiro.session.InvalidSessionException;
<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.shiro.session.Session;
<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.shiro.session.mgt.DefaultSessionManager;
<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.shiro.session.mgt.DelegatingSession;
<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.shiro.session.mgt.SessionContext;
<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.shiro.session.mgt.SessionKey;
<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.shiro.web.servlet.Cookie;
<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.shiro.web.servlet.ShiroHttpServletRequest;
<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.shiro.web.servlet.ShiroHttpSession;
<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.shiro.web.servlet.SimpleCookie;
<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.shiro.web.util.WebUtils;
<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
<a class="jxr_linenumber" name="L35" href="#L35">35</a>  
<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <strong class="jxr_keyword">import</strong> javax.servlet.ServletRequest;
<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <strong class="jxr_keyword">import</strong> javax.servlet.ServletResponse;
<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <strong class="jxr_keyword">import</strong> javax.servlet.http.HttpServletRequest;
<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <strong class="jxr_keyword">import</strong> javax.servlet.http.HttpServletResponse;
<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <strong class="jxr_keyword">import</strong> java.io.Serializable;
<a class="jxr_linenumber" name="L41" href="#L41">41</a>  
<a class="jxr_linenumber" name="L42" href="#L42">42</a>  
<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <em class="jxr_javadoccomment"> * Web-application capable {@link org.apache.shiro.session.mgt.SessionManager SessionManager} implementation.</em>
<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <em class="jxr_javadoccomment"> * @since 0.9</em>
<a class="jxr_linenumber" name="L47" href="#L47">47</a>  <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="L48" href="#L48">48</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="DefaultWebSessionManager" href="../../../../../../org/apache/shiro/web/session/mgt/DefaultWebSessionManager.html#DefaultWebSessionManager">DefaultWebSessionManager</a> <strong class="jxr_keyword">extends</strong> DefaultSessionManager <strong class="jxr_keyword">implements</strong> <a name="WebSessionManager" href="../../../../../../org/apache/shiro/web/session/mgt/WebSessionManager.html#WebSessionManager">WebSessionManager</a> {
<a class="jxr_linenumber" name="L49" href="#L49">49</a>  
<a class="jxr_linenumber" name="L50" href="#L50">50</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger log = LoggerFactory.getLogger(DefaultWebSessionManager.<strong class="jxr_keyword">class</strong>);
<a class="jxr_linenumber" name="L51" href="#L51">51</a>  
<a class="jxr_linenumber" name="L52" href="#L52">52</a>      <strong class="jxr_keyword">private</strong> <a name="Cookie" href="../../../../../../org/apache/shiro/web/servlet/Cookie.html#Cookie">Cookie</a> sessionIdCookie;
<a class="jxr_linenumber" name="L53" href="#L53">53</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> sessionIdCookieEnabled;
<a class="jxr_linenumber" name="L54" href="#L54">54</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> sessionIdUrlRewritingEnabled;
<a class="jxr_linenumber" name="L55" href="#L55">55</a>  
<a class="jxr_linenumber" name="L56" href="#L56">56</a>      <strong class="jxr_keyword">public</strong> <a name="DefaultWebSessionManager" href="../../../../../../org/apache/shiro/web/session/mgt/DefaultWebSessionManager.html#DefaultWebSessionManager">DefaultWebSessionManager</a>() {
<a class="jxr_linenumber" name="L57" href="#L57">57</a>          <a name="Cookie" href="../../../../../../org/apache/shiro/web/servlet/Cookie.html#Cookie">Cookie</a> cookie = <strong class="jxr_keyword">new</strong> <a name="SimpleCookie" href="../../../../../../org/apache/shiro/web/servlet/SimpleCookie.html#SimpleCookie">SimpleCookie</a>(ShiroHttpSession.DEFAULT_SESSION_ID_NAME);
<a class="jxr_linenumber" name="L58" href="#L58">58</a>          cookie.setHttpOnly(<strong class="jxr_keyword">true</strong>); <em class="jxr_comment">//more secure, protects against XSS attacks</em>
<a class="jxr_linenumber" name="L59" href="#L59">59</a>          <strong class="jxr_keyword">this</strong>.sessionIdCookie = cookie;
<a class="jxr_linenumber" name="L60" href="#L60">60</a>          <strong class="jxr_keyword">this</strong>.sessionIdCookieEnabled = <strong class="jxr_keyword">true</strong>;
<a class="jxr_linenumber" name="L61" href="#L61">61</a>          <strong class="jxr_keyword">this</strong>.sessionIdUrlRewritingEnabled = false;
<a class="jxr_linenumber" name="L62" href="#L62">62</a>      }
<a class="jxr_linenumber" name="L63" href="#L63">63</a>  
<a class="jxr_linenumber" name="L64" href="#L64">64</a>      <strong class="jxr_keyword">public</strong> <a name="Cookie" href="../../../../../../org/apache/shiro/web/servlet/Cookie.html#Cookie">Cookie</a> getSessionIdCookie() {
<a class="jxr_linenumber" name="L65" href="#L65">65</a>          <strong class="jxr_keyword">return</strong> sessionIdCookie;
<a class="jxr_linenumber" name="L66" href="#L66">66</a>      }
<a class="jxr_linenumber" name="L67" href="#L67">67</a>  
<a class="jxr_linenumber" name="L68" href="#L68">68</a>      @SuppressWarnings({<span class="jxr_string">"UnusedDeclaration"</span>})
<a class="jxr_linenumber" name="L69" href="#L69">69</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setSessionIdCookie(<a name="Cookie" href="../../../../../../org/apache/shiro/web/servlet/Cookie.html#Cookie">Cookie</a> sessionIdCookie) {
<a class="jxr_linenumber" name="L70" href="#L70">70</a>          <strong class="jxr_keyword">this</strong>.sessionIdCookie = sessionIdCookie;
<a class="jxr_linenumber" name="L71" href="#L71">71</a>      }
<a class="jxr_linenumber" name="L72" href="#L72">72</a>  
<a class="jxr_linenumber" name="L73" href="#L73">73</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isSessionIdCookieEnabled() {
<a class="jxr_linenumber" name="L74" href="#L74">74</a>          <strong class="jxr_keyword">return</strong> sessionIdCookieEnabled;
<a class="jxr_linenumber" name="L75" href="#L75">75</a>      }
<a class="jxr_linenumber" name="L76" href="#L76">76</a>  
<a class="jxr_linenumber" name="L77" href="#L77">77</a>      @SuppressWarnings({<span class="jxr_string">"UnusedDeclaration"</span>})
<a class="jxr_linenumber" name="L78" href="#L78">78</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setSessionIdCookieEnabled(<strong class="jxr_keyword">boolean</strong> sessionIdCookieEnabled) {
<a class="jxr_linenumber" name="L79" href="#L79">79</a>          <strong class="jxr_keyword">this</strong>.sessionIdCookieEnabled = sessionIdCookieEnabled;
<a class="jxr_linenumber" name="L80" href="#L80">80</a>      }
<a class="jxr_linenumber" name="L81" href="#L81">81</a>  
<a class="jxr_linenumber" name="L82" href="#L82">82</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isSessionIdUrlRewritingEnabled() {
<a class="jxr_linenumber" name="L83" href="#L83">83</a>          <strong class="jxr_keyword">return</strong> sessionIdUrlRewritingEnabled;
<a class="jxr_linenumber" name="L84" href="#L84">84</a>      }
<a class="jxr_linenumber" name="L85" href="#L85">85</a>  
<a class="jxr_linenumber" name="L86" href="#L86">86</a>      @SuppressWarnings({<span class="jxr_string">"UnusedDeclaration"</span>})
<a class="jxr_linenumber" name="L87" href="#L87">87</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setSessionIdUrlRewritingEnabled(<strong class="jxr_keyword">boolean</strong> sessionIdUrlRewritingEnabled) {
<a class="jxr_linenumber" name="L88" href="#L88">88</a>          <strong class="jxr_keyword">this</strong>.sessionIdUrlRewritingEnabled = sessionIdUrlRewritingEnabled;
<a class="jxr_linenumber" name="L89" href="#L89">89</a>      }
<a class="jxr_linenumber" name="L90" href="#L90">90</a>  
<a class="jxr_linenumber" name="L91" href="#L91">91</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> storeSessionId(Serializable currentId, HttpServletRequest request, HttpServletResponse response) {
<a class="jxr_linenumber" name="L92" href="#L92">92</a>          <strong class="jxr_keyword">if</strong> (currentId == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L93" href="#L93">93</a>              String msg = <span class="jxr_string">"sessionId cannot be null when persisting for subsequent requests."</span>;
<a class="jxr_linenumber" name="L94" href="#L94">94</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(msg);
<a class="jxr_linenumber" name="L95" href="#L95">95</a>          }
<a class="jxr_linenumber" name="L96" href="#L96">96</a>          <a name="Cookie" href="../../../../../../org/apache/shiro/web/servlet/Cookie.html#Cookie">Cookie</a> template = getSessionIdCookie();
<a class="jxr_linenumber" name="L97" href="#L97">97</a>          <a name="Cookie" href="../../../../../../org/apache/shiro/web/servlet/Cookie.html#Cookie">Cookie</a> cookie = <strong class="jxr_keyword">new</strong> <a name="SimpleCookie" href="../../../../../../org/apache/shiro/web/servlet/SimpleCookie.html#SimpleCookie">SimpleCookie</a>(template);
<a class="jxr_linenumber" name="L98" href="#L98">98</a>          String idString = currentId.toString();
<a class="jxr_linenumber" name="L99" href="#L99">99</a>          cookie.setValue(idString);
<a class="jxr_linenumber" name="L100" href="#L100">100</a>         cookie.saveTo(request, response);
<a class="jxr_linenumber" name="L101" href="#L101">101</a>         log.trace(<span class="jxr_string">"Set session ID cookie for session with id {}"</span>, idString);
<a class="jxr_linenumber" name="L102" href="#L102">102</a>     }
<a class="jxr_linenumber" name="L103" href="#L103">103</a> 
<a class="jxr_linenumber" name="L104" href="#L104">104</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> removeSessionIdCookie(HttpServletRequest request, HttpServletResponse response) {
<a class="jxr_linenumber" name="L105" href="#L105">105</a>         getSessionIdCookie().removeFrom(request, response);
<a class="jxr_linenumber" name="L106" href="#L106">106</a>     }
<a class="jxr_linenumber" name="L107" href="#L107">107</a> 
<a class="jxr_linenumber" name="L108" href="#L108">108</a>     <strong class="jxr_keyword">private</strong> String getSessionIdCookieValue(ServletRequest request, ServletResponse response) {
<a class="jxr_linenumber" name="L109" href="#L109">109</a>         <strong class="jxr_keyword">if</strong> (!isSessionIdCookieEnabled()) {
<a class="jxr_linenumber" name="L110" href="#L110">110</a>             log.debug(<span class="jxr_string">"Session ID cookie is disabled - session id will not be acquired from a request cookie."</span>);
<a class="jxr_linenumber" name="L111" href="#L111">111</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L112" href="#L112">112</a>         }
<a class="jxr_linenumber" name="L113" href="#L113">113</a>         <strong class="jxr_keyword">if</strong> (!(request instanceof HttpServletRequest)) {
<a class="jxr_linenumber" name="L114" href="#L114">114</a>             log.debug(<span class="jxr_string">"Current request is not an HttpServletRequest - cannot get session ID cookie.  Returning null."</span>);
<a class="jxr_linenumber" name="L115" href="#L115">115</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L116" href="#L116">116</a>         }
<a class="jxr_linenumber" name="L117" href="#L117">117</a>         HttpServletRequest httpRequest = (HttpServletRequest) request;
<a class="jxr_linenumber" name="L118" href="#L118">118</a>         <strong class="jxr_keyword">return</strong> getSessionIdCookie().readValue(httpRequest, WebUtils.toHttp(response));
<a class="jxr_linenumber" name="L119" href="#L119">119</a>     }
<a class="jxr_linenumber" name="L120" href="#L120">120</a> 
<a class="jxr_linenumber" name="L121" href="#L121">121</a>     <strong class="jxr_keyword">private</strong> Serializable getReferencedSessionId(ServletRequest request, ServletResponse response) {
<a class="jxr_linenumber" name="L122" href="#L122">122</a> 
<a class="jxr_linenumber" name="L123" href="#L123">123</a>         String id = getSessionIdCookieValue(request, response);
<a class="jxr_linenumber" name="L124" href="#L124">124</a>         <strong class="jxr_keyword">if</strong> (id != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L125" href="#L125">125</a>             request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_SOURCE,
<a class="jxr_linenumber" name="L126" href="#L126">126</a>                     ShiroHttpServletRequest.COOKIE_SESSION_ID_SOURCE);
<a class="jxr_linenumber" name="L127" href="#L127">127</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L128" href="#L128">128</a>             <em class="jxr_comment">//not in a cookie, or cookie is disabled - try the request URI as a fallback (i.e. due to URL rewriting):</em>
<a class="jxr_linenumber" name="L129" href="#L129">129</a> 
<a class="jxr_linenumber" name="L130" href="#L130">130</a>             <em class="jxr_comment">//try the URI path segment parameters first:</em>
<a class="jxr_linenumber" name="L131" href="#L131">131</a>             id = getUriPathSegmentParamValue(request, ShiroHttpSession.DEFAULT_SESSION_ID_NAME);
<a class="jxr_linenumber" name="L132" href="#L132">132</a> 
<a class="jxr_linenumber" name="L133" href="#L133">133</a>             <strong class="jxr_keyword">if</strong> (id == <strong class="jxr_keyword">null</strong> &amp;&amp; request instanceof HttpServletRequest) {
<a class="jxr_linenumber" name="L134" href="#L134">134</a>                 <em class="jxr_comment">//not a URI path segment parameter, try the query parameters:</em>
<a class="jxr_linenumber" name="L135" href="#L135">135</a>                 String name = getSessionIdName();
<a class="jxr_linenumber" name="L136" href="#L136">136</a>                 HttpServletRequest httpServletRequest = WebUtils.toHttp(request);
<a class="jxr_linenumber" name="L137" href="#L137">137</a>                 String queryString = httpServletRequest.getQueryString();
<a class="jxr_linenumber" name="L138" href="#L138">138</a>                 <strong class="jxr_keyword">if</strong> (queryString != <strong class="jxr_keyword">null</strong> &amp;&amp; queryString.contains(name)) {
<a class="jxr_linenumber" name="L139" href="#L139">139</a>                     id = request.getParameter(name);
<a class="jxr_linenumber" name="L140" href="#L140">140</a>                 }
<a class="jxr_linenumber" name="L141" href="#L141">141</a>                 <strong class="jxr_keyword">if</strong> (id == <strong class="jxr_keyword">null</strong> &amp;&amp; queryString != <strong class="jxr_keyword">null</strong> &amp;&amp; queryString.contains(name.toLowerCase())) {
<a class="jxr_linenumber" name="L142" href="#L142">142</a>                     <em class="jxr_comment">//try lowercase:</em>
<a class="jxr_linenumber" name="L143" href="#L143">143</a>                     id = request.getParameter(name.toLowerCase());
<a class="jxr_linenumber" name="L144" href="#L144">144</a>                 }
<a class="jxr_linenumber" name="L145" href="#L145">145</a>             }
<a class="jxr_linenumber" name="L146" href="#L146">146</a>             <strong class="jxr_keyword">if</strong> (id != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L147" href="#L147">147</a>                 request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_SOURCE,
<a class="jxr_linenumber" name="L148" href="#L148">148</a>                         ShiroHttpServletRequest.URL_SESSION_ID_SOURCE);
<a class="jxr_linenumber" name="L149" href="#L149">149</a>             }
<a class="jxr_linenumber" name="L150" href="#L150">150</a>         }
<a class="jxr_linenumber" name="L151" href="#L151">151</a>         <strong class="jxr_keyword">if</strong> (id != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L152" href="#L152">152</a>             request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID, id);
<a class="jxr_linenumber" name="L153" href="#L153">153</a>             <em class="jxr_comment">//automatically mark it valid here.  If it is invalid, the</em>
<a class="jxr_linenumber" name="L154" href="#L154">154</a>             <em class="jxr_comment">//onUnknownSession method below will be invoked and we'll remove the attribute at that time.</em>
<a class="jxr_linenumber" name="L155" href="#L155">155</a>             request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_IS_VALID, Boolean.TRUE);
<a class="jxr_linenumber" name="L156" href="#L156">156</a>         }
<a class="jxr_linenumber" name="L157" href="#L157">157</a> 
<a class="jxr_linenumber" name="L158" href="#L158">158</a>         <em class="jxr_comment">// always set rewrite flag - SHIRO-361</em>
<a class="jxr_linenumber" name="L159" href="#L159">159</a>         request.setAttribute(ShiroHttpServletRequest.SESSION_ID_URL_REWRITING_ENABLED, isSessionIdUrlRewritingEnabled());
<a class="jxr_linenumber" name="L160" href="#L160">160</a> 
<a class="jxr_linenumber" name="L161" href="#L161">161</a>         <strong class="jxr_keyword">return</strong> id;
<a class="jxr_linenumber" name="L162" href="#L162">162</a>     }
<a class="jxr_linenumber" name="L163" href="#L163">163</a> 
<a class="jxr_linenumber" name="L164" href="#L164">164</a>     <em class="jxr_comment">//SHIRO-351</em>
<a class="jxr_linenumber" name="L165" href="#L165">165</a>     <em class="jxr_comment">//also see http://cdivilly.wordpress.com/2011/04/22/java-servlets-uri-parameters/</em>
<a class="jxr_linenumber" name="L166" href="#L166">166</a>     <em class="jxr_comment">//since 1.2.2</em>
<a class="jxr_linenumber" name="L167" href="#L167">167</a>     <strong class="jxr_keyword">private</strong> String getUriPathSegmentParamValue(ServletRequest servletRequest, String paramName) {
<a class="jxr_linenumber" name="L168" href="#L168">168</a> 
<a class="jxr_linenumber" name="L169" href="#L169">169</a>         <strong class="jxr_keyword">if</strong> (!(servletRequest instanceof HttpServletRequest)) {
<a class="jxr_linenumber" name="L170" href="#L170">170</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L171" href="#L171">171</a>         }
<a class="jxr_linenumber" name="L172" href="#L172">172</a>         HttpServletRequest request = (HttpServletRequest)servletRequest;
<a class="jxr_linenumber" name="L173" href="#L173">173</a>         String uri = request.getRequestURI();
<a class="jxr_linenumber" name="L174" href="#L174">174</a>         <strong class="jxr_keyword">if</strong> (uri == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L175" href="#L175">175</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L176" href="#L176">176</a>         }
<a class="jxr_linenumber" name="L177" href="#L177">177</a> 
<a class="jxr_linenumber" name="L178" href="#L178">178</a>         <strong class="jxr_keyword">int</strong> queryStartIndex = uri.indexOf('?');
<a class="jxr_linenumber" name="L179" href="#L179">179</a>         <strong class="jxr_keyword">if</strong> (queryStartIndex &gt;= 0) { <em class="jxr_comment">//get rid of the query string</em>
<a class="jxr_linenumber" name="L180" href="#L180">180</a>             uri = uri.substring(0, queryStartIndex);
<a class="jxr_linenumber" name="L181" href="#L181">181</a>         }
<a class="jxr_linenumber" name="L182" href="#L182">182</a> 
<a class="jxr_linenumber" name="L183" href="#L183">183</a>         <strong class="jxr_keyword">int</strong> index = uri.indexOf(';'); <em class="jxr_comment">//now check for path segment parameters:</em>
<a class="jxr_linenumber" name="L184" href="#L184">184</a>         <strong class="jxr_keyword">if</strong> (index &lt; 0) {
<a class="jxr_linenumber" name="L185" href="#L185">185</a>             <em class="jxr_comment">//no path segment params - return:</em>
<a class="jxr_linenumber" name="L186" href="#L186">186</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L187" href="#L187">187</a>         }
<a class="jxr_linenumber" name="L188" href="#L188">188</a> 
<a class="jxr_linenumber" name="L189" href="#L189">189</a>         <em class="jxr_comment">//there are path segment params, let's get the last one that may exist:</em>
<a class="jxr_linenumber" name="L190" href="#L190">190</a> 
<a class="jxr_linenumber" name="L191" href="#L191">191</a>         <strong class="jxr_keyword">final</strong> String TOKEN = paramName + <span class="jxr_string">"="</span>;
<a class="jxr_linenumber" name="L192" href="#L192">192</a> 
<a class="jxr_linenumber" name="L193" href="#L193">193</a>         uri = uri.substring(index+1); <em class="jxr_comment">//uri now contains only the path segment params</em>
<a class="jxr_linenumber" name="L194" href="#L194">194</a> 
<a class="jxr_linenumber" name="L195" href="#L195">195</a>         <em class="jxr_comment">//we only care about the last JSESSIONID param:</em>
<a class="jxr_linenumber" name="L196" href="#L196">196</a>         index = uri.lastIndexOf(TOKEN);
<a class="jxr_linenumber" name="L197" href="#L197">197</a>         <strong class="jxr_keyword">if</strong> (index &lt; 0) {
<a class="jxr_linenumber" name="L198" href="#L198">198</a>             <em class="jxr_comment">//no segment param:</em>
<a class="jxr_linenumber" name="L199" href="#L199">199</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L200" href="#L200">200</a>         }
<a class="jxr_linenumber" name="L201" href="#L201">201</a> 
<a class="jxr_linenumber" name="L202" href="#L202">202</a>         uri = uri.substring(index + TOKEN.length());
<a class="jxr_linenumber" name="L203" href="#L203">203</a> 
<a class="jxr_linenumber" name="L204" href="#L204">204</a>         index = uri.indexOf(';'); <em class="jxr_comment">//strip off any remaining segment params:</em>
<a class="jxr_linenumber" name="L205" href="#L205">205</a>         <strong class="jxr_keyword">if</strong>(index &gt;= 0) {
<a class="jxr_linenumber" name="L206" href="#L206">206</a>             uri = uri.substring(0, index);
<a class="jxr_linenumber" name="L207" href="#L207">207</a>         }
<a class="jxr_linenumber" name="L208" href="#L208">208</a> 
<a class="jxr_linenumber" name="L209" href="#L209">209</a>         <strong class="jxr_keyword">return</strong> uri; <em class="jxr_comment">//what remains is the value</em>
<a class="jxr_linenumber" name="L210" href="#L210">210</a>     }
<a class="jxr_linenumber" name="L211" href="#L211">211</a> 
<a class="jxr_linenumber" name="L212" href="#L212">212</a>     <em class="jxr_comment">//since 1.2.1</em>
<a class="jxr_linenumber" name="L213" href="#L213">213</a>     <strong class="jxr_keyword">private</strong> String getSessionIdName() {
<a class="jxr_linenumber" name="L214" href="#L214">214</a>         String name = <strong class="jxr_keyword">this</strong>.sessionIdCookie != <strong class="jxr_keyword">null</strong> ? <strong class="jxr_keyword">this</strong>.sessionIdCookie.getName() : <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L215" href="#L215">215</a>         <strong class="jxr_keyword">if</strong> (name == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L216" href="#L216">216</a>             name = ShiroHttpSession.DEFAULT_SESSION_ID_NAME;
<a class="jxr_linenumber" name="L217" href="#L217">217</a>         }
<a class="jxr_linenumber" name="L218" href="#L218">218</a>         <strong class="jxr_keyword">return</strong> name;
<a class="jxr_linenumber" name="L219" href="#L219">219</a>     }
<a class="jxr_linenumber" name="L220" href="#L220">220</a> 
<a class="jxr_linenumber" name="L221" href="#L221">221</a>     <strong class="jxr_keyword">protected</strong> Session createExposedSession(Session session, SessionContext context) {
<a class="jxr_linenumber" name="L222" href="#L222">222</a>         <strong class="jxr_keyword">if</strong> (!WebUtils.isWeb(context)) {
<a class="jxr_linenumber" name="L223" href="#L223">223</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.createExposedSession(session, context);
<a class="jxr_linenumber" name="L224" href="#L224">224</a>         }
<a class="jxr_linenumber" name="L225" href="#L225">225</a>         ServletRequest request = WebUtils.getRequest(context);
<a class="jxr_linenumber" name="L226" href="#L226">226</a>         ServletResponse response = WebUtils.getResponse(context);
<a class="jxr_linenumber" name="L227" href="#L227">227</a>         SessionKey key = <strong class="jxr_keyword">new</strong> <a name="WebSessionKey" href="../../../../../../org/apache/shiro/web/session/mgt/WebSessionKey.html#WebSessionKey">WebSessionKey</a>(session.getId(), request, response);
<a class="jxr_linenumber" name="L228" href="#L228">228</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> DelegatingSession(<strong class="jxr_keyword">this</strong>, key);
<a class="jxr_linenumber" name="L229" href="#L229">229</a>     }
<a class="jxr_linenumber" name="L230" href="#L230">230</a> 
<a class="jxr_linenumber" name="L231" href="#L231">231</a>     <strong class="jxr_keyword">protected</strong> Session createExposedSession(Session session, SessionKey key) {
<a class="jxr_linenumber" name="L232" href="#L232">232</a>         <strong class="jxr_keyword">if</strong> (!WebUtils.isWeb(key)) {
<a class="jxr_linenumber" name="L233" href="#L233">233</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.createExposedSession(session, key);
<a class="jxr_linenumber" name="L234" href="#L234">234</a>         }
<a class="jxr_linenumber" name="L235" href="#L235">235</a> 
<a class="jxr_linenumber" name="L236" href="#L236">236</a>         ServletRequest request = WebUtils.getRequest(key);
<a class="jxr_linenumber" name="L237" href="#L237">237</a>         ServletResponse response = WebUtils.getResponse(key);
<a class="jxr_linenumber" name="L238" href="#L238">238</a>         SessionKey sessionKey = <strong class="jxr_keyword">new</strong> <a name="WebSessionKey" href="../../../../../../org/apache/shiro/web/session/mgt/WebSessionKey.html#WebSessionKey">WebSessionKey</a>(session.getId(), request, response);
<a class="jxr_linenumber" name="L239" href="#L239">239</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> DelegatingSession(<strong class="jxr_keyword">this</strong>, sessionKey);
<a class="jxr_linenumber" name="L240" href="#L240">240</a>     }
<a class="jxr_linenumber" name="L241" href="#L241">241</a> 
<a class="jxr_linenumber" name="L242" href="#L242">242</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L243" href="#L243">243</a> <em class="jxr_javadoccomment">     * Stores the Session's ID, usually as a Cookie, to associate with future requests.</em>
<a class="jxr_linenumber" name="L244" href="#L244">244</a> <em class="jxr_javadoccomment">     *</em>
<a class="jxr_linenumber" name="L245" href="#L245">245</a> <em class="jxr_javadoccomment">     * @param session the session that was just {@link #createSession created}.</em>
<a class="jxr_linenumber" name="L246" href="#L246">246</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="L247" href="#L247">247</a>     @Override
<a class="jxr_linenumber" name="L248" href="#L248">248</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> onStart(Session session, SessionContext context) {
<a class="jxr_linenumber" name="L249" href="#L249">249</a>         <strong class="jxr_keyword">super</strong>.onStart(session, context);
<a class="jxr_linenumber" name="L250" href="#L250">250</a> 
<a class="jxr_linenumber" name="L251" href="#L251">251</a>         <strong class="jxr_keyword">if</strong> (!WebUtils.isHttp(context)) {
<a class="jxr_linenumber" name="L252" href="#L252">252</a>             log.debug(<span class="jxr_string">"SessionContext argument is not HTTP compatible or does not have an HTTP request/response "</span> +
<a class="jxr_linenumber" name="L253" href="#L253">253</a>                     <span class="jxr_string">"pair. No session ID cookie will be set."</span>);
<a class="jxr_linenumber" name="L254" href="#L254">254</a>             <strong class="jxr_keyword">return</strong>;
<a class="jxr_linenumber" name="L255" href="#L255">255</a> 
<a class="jxr_linenumber" name="L256" href="#L256">256</a>         }
<a class="jxr_linenumber" name="L257" href="#L257">257</a>         HttpServletRequest request = WebUtils.getHttpRequest(context);
<a class="jxr_linenumber" name="L258" href="#L258">258</a>         HttpServletResponse response = WebUtils.getHttpResponse(context);
<a class="jxr_linenumber" name="L259" href="#L259">259</a> 
<a class="jxr_linenumber" name="L260" href="#L260">260</a>         <strong class="jxr_keyword">if</strong> (isSessionIdCookieEnabled()) {
<a class="jxr_linenumber" name="L261" href="#L261">261</a>             Serializable sessionId = session.getId();
<a class="jxr_linenumber" name="L262" href="#L262">262</a>             storeSessionId(sessionId, request, response);
<a class="jxr_linenumber" name="L263" href="#L263">263</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L264" href="#L264">264</a>             log.debug(<span class="jxr_string">"Session ID cookie is disabled.  No cookie has been set for new session with id {}"</span>, session.getId());
<a class="jxr_linenumber" name="L265" href="#L265">265</a>         }
<a class="jxr_linenumber" name="L266" href="#L266">266</a> 
<a class="jxr_linenumber" name="L267" href="#L267">267</a>         request.removeAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_SOURCE);
<a class="jxr_linenumber" name="L268" href="#L268">268</a>         request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_IS_NEW, Boolean.TRUE);
<a class="jxr_linenumber" name="L269" href="#L269">269</a>     }
<a class="jxr_linenumber" name="L270" href="#L270">270</a> 
<a class="jxr_linenumber" name="L271" href="#L271">271</a>     @Override
<a class="jxr_linenumber" name="L272" href="#L272">272</a>     <strong class="jxr_keyword">public</strong> Serializable getSessionId(SessionKey key) {
<a class="jxr_linenumber" name="L273" href="#L273">273</a>         Serializable id = <strong class="jxr_keyword">super</strong>.getSessionId(key);
<a class="jxr_linenumber" name="L274" href="#L274">274</a>         <strong class="jxr_keyword">if</strong> (id == <strong class="jxr_keyword">null</strong> &amp;&amp; WebUtils.isWeb(key)) {
<a class="jxr_linenumber" name="L275" href="#L275">275</a>             ServletRequest request = WebUtils.getRequest(key);
<a class="jxr_linenumber" name="L276" href="#L276">276</a>             ServletResponse response = WebUtils.getResponse(key);
<a class="jxr_linenumber" name="L277" href="#L277">277</a>             id = getSessionId(request, response);
<a class="jxr_linenumber" name="L278" href="#L278">278</a>         }
<a class="jxr_linenumber" name="L279" href="#L279">279</a>         <strong class="jxr_keyword">return</strong> id;
<a class="jxr_linenumber" name="L280" href="#L280">280</a>     }
<a class="jxr_linenumber" name="L281" href="#L281">281</a> 
<a class="jxr_linenumber" name="L282" href="#L282">282</a>     <strong class="jxr_keyword">protected</strong> Serializable getSessionId(ServletRequest request, ServletResponse response) {
<a class="jxr_linenumber" name="L283" href="#L283">283</a>         <strong class="jxr_keyword">return</strong> getReferencedSessionId(request, response);
<a class="jxr_linenumber" name="L284" href="#L284">284</a>     }
<a class="jxr_linenumber" name="L285" href="#L285">285</a> 
<a class="jxr_linenumber" name="L286" href="#L286">286</a>     @Override
<a class="jxr_linenumber" name="L287" href="#L287">287</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> onExpiration(Session s, ExpiredSessionException ese, SessionKey key) {
<a class="jxr_linenumber" name="L288" href="#L288">288</a>         <strong class="jxr_keyword">super</strong>.onExpiration(s, ese, key);
<a class="jxr_linenumber" name="L289" href="#L289">289</a>         onInvalidation(key);
<a class="jxr_linenumber" name="L290" href="#L290">290</a>     }
<a class="jxr_linenumber" name="L291" href="#L291">291</a> 
<a class="jxr_linenumber" name="L292" href="#L292">292</a>     @Override
<a class="jxr_linenumber" name="L293" href="#L293">293</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> onInvalidation(Session session, InvalidSessionException ise, SessionKey key) {
<a class="jxr_linenumber" name="L294" href="#L294">294</a>         <strong class="jxr_keyword">super</strong>.onInvalidation(session, ise, key);
<a class="jxr_linenumber" name="L295" href="#L295">295</a>         onInvalidation(key);
<a class="jxr_linenumber" name="L296" href="#L296">296</a>     }
<a class="jxr_linenumber" name="L297" href="#L297">297</a> 
<a class="jxr_linenumber" name="L298" href="#L298">298</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> onInvalidation(SessionKey key) {
<a class="jxr_linenumber" name="L299" href="#L299">299</a>         ServletRequest request = WebUtils.getRequest(key);
<a class="jxr_linenumber" name="L300" href="#L300">300</a>         <strong class="jxr_keyword">if</strong> (request != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L301" href="#L301">301</a>             request.removeAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_IS_VALID);
<a class="jxr_linenumber" name="L302" href="#L302">302</a>         }
<a class="jxr_linenumber" name="L303" href="#L303">303</a>         <strong class="jxr_keyword">if</strong> (WebUtils.isHttp(key)) {
<a class="jxr_linenumber" name="L304" href="#L304">304</a>             log.debug(<span class="jxr_string">"Referenced session was invalid.  Removing session ID cookie."</span>);
<a class="jxr_linenumber" name="L305" href="#L305">305</a>             removeSessionIdCookie(WebUtils.getHttpRequest(key), WebUtils.getHttpResponse(key));
<a class="jxr_linenumber" name="L306" href="#L306">306</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L307" href="#L307">307</a>             log.debug(<span class="jxr_string">"SessionKey argument is not HTTP compatible or does not have an HTTP request/response "</span> +
<a class="jxr_linenumber" name="L308" href="#L308">308</a>                     <span class="jxr_string">"pair. Session ID cookie will not be removed due to invalidated session."</span>);
<a class="jxr_linenumber" name="L309" href="#L309">309</a>         }
<a class="jxr_linenumber" name="L310" href="#L310">310</a>     }
<a class="jxr_linenumber" name="L311" href="#L311">311</a> 
<a class="jxr_linenumber" name="L312" href="#L312">312</a>     @Override
<a class="jxr_linenumber" name="L313" href="#L313">313</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> onStop(Session session, SessionKey key) {
<a class="jxr_linenumber" name="L314" href="#L314">314</a>         <strong class="jxr_keyword">super</strong>.onStop(session, key);
<a class="jxr_linenumber" name="L315" href="#L315">315</a>         <strong class="jxr_keyword">if</strong> (WebUtils.isHttp(key)) {
<a class="jxr_linenumber" name="L316" href="#L316">316</a>             HttpServletRequest request = WebUtils.getHttpRequest(key);
<a class="jxr_linenumber" name="L317" href="#L317">317</a>             HttpServletResponse response = WebUtils.getHttpResponse(key);
<a class="jxr_linenumber" name="L318" href="#L318">318</a>             log.debug(<span class="jxr_string">"Session has been stopped (subject logout or explicit stop).  Removing session ID cookie."</span>);
<a class="jxr_linenumber" name="L319" href="#L319">319</a>             removeSessionIdCookie(request, response);
<a class="jxr_linenumber" name="L320" href="#L320">320</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L321" href="#L321">321</a>             log.debug(<span class="jxr_string">"SessionKey argument is not HTTP compatible or does not have an HTTP request/response "</span> +
<a class="jxr_linenumber" name="L322" href="#L322">322</a>                     <span class="jxr_string">"pair. Session ID cookie will not be removed due to stopped session."</span>);
<a class="jxr_linenumber" name="L323" href="#L323">323</a>         }
<a class="jxr_linenumber" name="L324" href="#L324">324</a>     }
<a class="jxr_linenumber" name="L325" href="#L325">325</a> 
<a class="jxr_linenumber" name="L326" href="#L326">326</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L327" href="#L327">327</a> <em class="jxr_javadoccomment">     * This is a native session manager implementation, so this method returns {@code false} always.</em>
<a class="jxr_linenumber" name="L328" href="#L328">328</a> <em class="jxr_javadoccomment">     *</em>
<a class="jxr_linenumber" name="L329" href="#L329">329</a> <em class="jxr_javadoccomment">     * @return {@code false} always</em>
<a class="jxr_linenumber" name="L330" href="#L330">330</a> <em class="jxr_javadoccomment">     * @since 1.2</em>
<a class="jxr_linenumber" name="L331" href="#L331">331</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="L332" href="#L332">332</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isServletContainerSessions() {
<a class="jxr_linenumber" name="L333" href="#L333">333</a>         <strong class="jxr_keyword">return</strong> false;
<a class="jxr_linenumber" name="L334" href="#L334">334</a>     }
<a class="jxr_linenumber" name="L335" href="#L335">335</a> }
</pre>
<hr/>
<div id="footer">Copyright &#169; 2004&#x2013;2022 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</div>
</body>
</html>
