<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
</head>
<body>
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
<span class="sourceLineNo">002</span> * Copyright 2008 Les Hazlewood<a name="line.2"></a>
<span class="sourceLineNo">003</span> *<a name="line.3"></a>
<span class="sourceLineNo">004</span> * Licensed under the Apache License, Version 2.0 (the "License");<a name="line.4"></a>
<span class="sourceLineNo">005</span> * you may not use this file except in compliance with the License.<a name="line.5"></a>
<span class="sourceLineNo">006</span> * You may obtain a copy of the License at<a name="line.6"></a>
<span class="sourceLineNo">007</span> *<a name="line.7"></a>
<span class="sourceLineNo">008</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.8"></a>
<span class="sourceLineNo">009</span> *<a name="line.9"></a>
<span class="sourceLineNo">010</span> * Unless required by applicable law or agreed to in writing, software<a name="line.10"></a>
<span class="sourceLineNo">011</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.11"></a>
<span class="sourceLineNo">012</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.12"></a>
<span class="sourceLineNo">013</span> * See the License for the specific language governing permissions and<a name="line.13"></a>
<span class="sourceLineNo">014</span> * limitations under the License.<a name="line.14"></a>
<span class="sourceLineNo">015</span> */<a name="line.15"></a>
<span class="sourceLineNo">016</span>package org.apache.shiro.session.mgt;<a name="line.16"></a>
<span class="sourceLineNo">017</span><a name="line.17"></a>
<span class="sourceLineNo">018</span>import java.io.Serializable;<a name="line.18"></a>
<span class="sourceLineNo">019</span><a name="line.19"></a>
<span class="sourceLineNo">020</span>/**<a name="line.20"></a>
<span class="sourceLineNo">021</span> * A {@code SessionKey} is a key that allows look-up of any particular {@link org.apache.shiro.session.Session Session}<a name="line.21"></a>
<span class="sourceLineNo">022</span> * instance.  This is not to be confused what is probably better recognized as a session &lt;em&gt;attribute&lt;/em&gt; key - a key<a name="line.22"></a>
<span class="sourceLineNo">023</span> * that is used to acquire a session attribute via the<a name="line.23"></a>
<span class="sourceLineNo">024</span> * {@link org.apache.shiro.session.Session#getAttribute(Object) Session.getAttribute} method.  A {@code SessionKey}<a name="line.24"></a>
<span class="sourceLineNo">025</span> * looks up a Session object directly.<a name="line.25"></a>
<span class="sourceLineNo">026</span> * &lt;p/&gt;<a name="line.26"></a>
<span class="sourceLineNo">027</span> * While a {@code SessionKey} allows lookup of &lt;em&gt;any&lt;/em&gt; Session that might exist, this is not something in practice<a name="line.27"></a>
<span class="sourceLineNo">028</span> * done too often by most Shiro end-users.  Instead, it is usually more convenient to acquire the currently executing<a name="line.28"></a>
<span class="sourceLineNo">029</span> * {@code Subject}'s session via the {@link org.apache.shiro.subject.Subject#getSession} method.  This interface and<a name="line.29"></a>
<span class="sourceLineNo">030</span> * its usages are best suited for framework development.<a name="line.30"></a>
<span class="sourceLineNo">031</span> *<a name="line.31"></a>
<span class="sourceLineNo">032</span> * @since 1.0<a name="line.32"></a>
<span class="sourceLineNo">033</span> */<a name="line.33"></a>
<span class="sourceLineNo">034</span>public interface SessionKey {<a name="line.34"></a>
<span class="sourceLineNo">035</span><a name="line.35"></a>
<span class="sourceLineNo">036</span>    /**<a name="line.36"></a>
<span class="sourceLineNo">037</span>     * Returns the id of the session to acquire.<a name="line.37"></a>
<span class="sourceLineNo">038</span>     * &lt;p/&gt;<a name="line.38"></a>
<span class="sourceLineNo">039</span>     * Acquiring sessions by ID only is a suitable strategy when sessions are natively managed by Shiro directly.<a name="line.39"></a>
<span class="sourceLineNo">040</span>     * For example, the Servlet specification does not have an API that allows session acquisition by session ID, so<a name="line.40"></a>
<span class="sourceLineNo">041</span>     * the session ID alone is not sufficient for ServletContainer-based SessionManager implementations.<a name="line.41"></a>
<span class="sourceLineNo">042</span>     *<a name="line.42"></a>
<span class="sourceLineNo">043</span>     * @return the id of the session to acquire.<a name="line.43"></a>
<span class="sourceLineNo">044</span>     */<a name="line.44"></a>
<span class="sourceLineNo">045</span>    Serializable getSessionId();<a name="line.45"></a>
<span class="sourceLineNo">046</span>}<a name="line.46"></a>




























































</pre>
</div>
</body>
</html>

