Cookie Helper. Rewriting mapping improvment.
This commit is contained in:
parent
cf78d377f0
commit
b6acb10fb2
2 changed files with 274 additions and 144 deletions
|
@ -30,8 +30,12 @@ public class SimpleServletDispatcher extends HttpServlet
|
||||||
{
|
{
|
||||||
private static final long serialVersionUID = -3471226305721330069L;
|
private static final long serialVersionUID = -3471226305721330069L;
|
||||||
static protected org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger (ServletDispatcher.class);
|
static protected org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger (ServletDispatcher.class);
|
||||||
static protected Pattern URL_PARAMETER_PATTERN = Pattern.compile("^(.+)-\\d+\\.xhtml$");
|
static final protected Pattern SHORT_REWRITED_URL_CLASS = Pattern.compile("^([^-]+)-.+\\.xhtml$");
|
||||||
static protected Pattern URL_PARAMETER_PATTERN2 = Pattern.compile("^.+-(\\d+)\\.xhtml$");
|
static final protected Pattern SHORT_REWRITED_URL_PARAMETERS = Pattern.compile("^[^-]+-(.+)\\.xhtml$");
|
||||||
|
static final protected Pattern LONG_REWRITED_URL_CLASS = Pattern.compile("^([^-]+)-/.*$");
|
||||||
|
//static final protected Pattern LONG_REWRITED_URL_PARAMETERS = Pattern.compile("^.+-/(.)+*$");
|
||||||
|
static final protected Pattern REWRITE_PARAMETER = Pattern.compile("[^%\\w\\d]");
|
||||||
|
|
||||||
protected String webclassesRootPath;
|
protected String webclassesRootPath;
|
||||||
|
|
||||||
|
|
||||||
|
@ -71,7 +75,8 @@ public class SimpleServletDispatcher extends HttpServlet
|
||||||
* "/good/" => "good.Good_xhtml"
|
* "/good/" => "good.Good_xhtml"
|
||||||
* "/good/morning.xhtml" => "good.Morning_xhtml"
|
* "/good/morning.xhtml" => "good.Morning_xhtml"
|
||||||
* "/good/morning_girl.xhtml" => "good.Morning_girl_xhtml"
|
* "/good/morning_girl.xhtml" => "good.Morning_girl_xhtml"
|
||||||
* "/good/morning-123.xhtml" => "good.Morning_xhtml" (123 is detected as a parameter, it will be decoded in the class called later).
|
* "/good/morning-123.xhtml" => "good.Morning_xhtml" ('123' is detected as a parameter, it will be decoded in the class called later).
|
||||||
|
* "/good/morning-/12/toto.jpg" => "good.Morning" ('12' and 'toto.jpg" are detected as a parameter, they will be decoded in the class called later).
|
||||||
*/
|
*/
|
||||||
static public String pathInfoToClassName (String pathInfo)
|
static public String pathInfoToClassName (String pathInfo)
|
||||||
{
|
{
|
||||||
|
@ -89,34 +94,58 @@ public class SimpleServletDispatcher extends HttpServlet
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
String[] tokens = pathInfo.split ("/");
|
int keywordIndex = pathInfo.lastIndexOf("-/");
|
||||||
StringList name = new StringList();
|
|
||||||
|
if (keywordIndex != -1)
|
||||||
for (int tokenCounter = 1; tokenCounter < tokens.length - 1; tokenCounter++)
|
|
||||||
{
|
{
|
||||||
name.append (tokens[tokenCounter]);
|
// Long rewrited URL case.
|
||||||
name.append ('.');
|
String[] tokens = pathInfo.substring(0, keywordIndex).split("/");
|
||||||
}
|
|
||||||
|
StringList name = new StringList();
|
||||||
String lastToken = tokens[tokens.length - 1];
|
// Note: as pathInfo starts always with a '/', the first good token index is 1.
|
||||||
if (pathInfo.endsWith ("/"))
|
for (int tokenCounter = 1; tokenCounter < tokens.length - 1; tokenCounter++)
|
||||||
{
|
{
|
||||||
name.append(lastToken).append(".").append(lastToken.substring(0, 1).toUpperCase()).append(lastToken.substring(1)).append("_xhtml");
|
name.append (tokens[tokenCounter]);
|
||||||
|
name.append ('.');
|
||||||
|
}
|
||||||
|
|
||||||
|
String lastToken = tokens[tokens.length - 1];
|
||||||
|
name.append (lastToken.substring(0, 1).toUpperCase()).append (lastToken.substring(1).replace('.', '_'));
|
||||||
|
result = name.toString ();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Matcher matcher = URL_PARAMETER_PATTERN.matcher(lastToken);
|
String[] tokens = pathInfo.split ("/");
|
||||||
if (matcher.matches())
|
|
||||||
|
StringList name = new StringList();
|
||||||
|
// Note: as pathInfo starts always with a '/', the first good token index is 1.
|
||||||
|
for (int tokenCounter = 1; tokenCounter < tokens.length - 1; tokenCounter++)
|
||||||
{
|
{
|
||||||
//logger.debug("group 1=[" + matcher.group(1) + "]");
|
name.append (tokens[tokenCounter]);
|
||||||
lastToken = matcher.group(1) + ".xhtml";
|
name.append ('.');
|
||||||
}
|
}
|
||||||
|
|
||||||
name.append (lastToken.substring(0, 1).toUpperCase()).append (lastToken.substring(1).replace('.', '_'));
|
String lastToken = tokens[tokens.length - 1];
|
||||||
|
if (pathInfo.endsWith ("/"))
|
||||||
|
{
|
||||||
|
name.append(lastToken).append(".").append(lastToken.substring(0, 1).toUpperCase()).append(lastToken.substring(1)).append("_xhtml");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Matcher matcher = SHORT_REWRITED_URL_CLASS.matcher(lastToken);
|
||||||
|
if (matcher.matches())
|
||||||
|
{
|
||||||
|
// Short rewrited URL case.
|
||||||
|
//logger.debug("group 1=[" + matcher.group(1) + "]");
|
||||||
|
lastToken = matcher.group(1) + ".xhtml";
|
||||||
|
}
|
||||||
|
|
||||||
|
name.append (lastToken.substring(0, 1).toUpperCase()).append (lastToken.substring(1).replace('.', '_'));
|
||||||
|
}
|
||||||
|
|
||||||
|
result = name.toString ();
|
||||||
|
logger.debug ("==>[" + tokens[tokens.length - 1] + "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
result = name.toString ();
|
|
||||||
logger.debug ("==>[" + tokens[tokens.length - 1] + "]");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -329,7 +358,7 @@ public class SimpleServletDispatcher extends HttpServlet
|
||||||
*/
|
*/
|
||||||
String path = request.getRequestURI();
|
String path = request.getRequestURI();
|
||||||
|
|
||||||
if ((!path.endsWith("/")) && (!path.endsWith(".xhtml")))
|
if ((!path.endsWith("/")) && (!path.endsWith(".xhtml")) && (!path.contains("-/")))
|
||||||
{
|
{
|
||||||
path = getServletContext ().getRealPath("/") + request.getRequestURI();
|
path = getServletContext ().getRealPath("/") + request.getRequestURI();
|
||||||
|
|
||||||
|
@ -377,27 +406,136 @@ public class SimpleServletDispatcher extends HttpServlet
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* "Code can be shortest, speedest and memory smallest, but not the three in same time, only two", unknow citation.
|
||||||
|
*
|
||||||
|
* Note: characters array avalaible here http://fr.wikipedia.org/wiki/Table_des_caract%C3%A8res_Unicode_%280000-0FFF%29
|
||||||
|
*/
|
||||||
|
static protected char NONE = (char) 0;
|
||||||
|
static protected int[] rewritingParameterMapping =
|
||||||
|
{
|
||||||
|
/* 00 */ NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE ,
|
||||||
|
/* 10 */ NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE ,
|
||||||
|
/* 20 */ '-' , NONE , NONE , '-' , '-' , '-' , '-' , '-' , '-' , '-' , '-' , '-' , '-' , '-' , '-' , '-' ,
|
||||||
|
/* 30 */ '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , '-' , '-' , '-' , '-' , '-' , '-' ,
|
||||||
|
/* 40 */ '\u0040', 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i' , 'j' , 'k' , 'l' , 'm' , 'n' , 'o' ,
|
||||||
|
/* 50 */ 'p' , 'q' , 'r' , 's' , 't' , 'u' , 'v' , 'w' , 'x' , 'y' , 'z' , '-' , '-' , '-' , '-' , '-' ,
|
||||||
|
/* 60 */ '-' , '\u0061', '\u0062', '\u0063', '\u0064', '\u0065', '\u0066', '\u0067', '\u0068', '\u0069', '\u006A', '\u006B', '\u006C', '\u006D', '\u006E', '\u006F',
|
||||||
|
/* 70 */ '\u0070', '\u0071', '\u0072', '\u0073', '\u0074', '\u0075', '\u0076', '\u0077', '\u0078', '\u0079', '\u007A', '\u007B', '\u007C', '\u007D', '-' , '-' ,
|
||||||
|
/* 80 */ NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE ,
|
||||||
|
/* 90 */ NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE ,
|
||||||
|
/* A0 */ '\u00A0', '\u00A1', '\u00A2', '\u00A3', '\u00A4', '\u00A5', '\u00A6', '\u00A7', '\u00A8', '\u00A9', '\u00AA', '\u00AB', '\u00AC', '\u00AD', '\u00AE', '\u00AF',
|
||||||
|
/* B0 */ '-' , '\u00B1', '\u00B2', '\u00B3', '\u00B4', '\u00B5', '\u00B6', '\u00B7', '\u00B8', '\u00B9', '\u00BA', '\u00BB', '\u00BC', '\u00BD', '\u00BE', '\u00BF',
|
||||||
|
/* C0 */ 'a' , 'a' , 'a' , 'a' , 'a' , 'a' , 'a' , 'c' , 'e' , 'e' , 'e' , 'e' , 'i' , 'i' , 'i' , 'i' ,
|
||||||
|
/* D0 */ '\u00D0', '\u00D1', 'o' , 'o' , 'o' , 'o' , 'o' , 'o' , '\u00D8', 'u' , 'u' , 'u' , 'u' , 'y' , '\u00DE', '\u00DF',
|
||||||
|
/* E0 */ 'a' , 'a' , 'a' , 'a' , 'a' , 'a' , 'a' , 'c' , 'e' , 'e' , 'e' , 'e' , 'i' , 'i' , 'i' , 'i' ,
|
||||||
|
/* F0 */ 'o' , 'n' , 'o' , 'o' , 'o' , 'o' , 'o' , '\u00F7', '-' , 'u' , 'u' , 'u' , 'u' , 'y' , '-' , 'y'
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param parameter
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
static String rewriteParameter (String parameter)
|
||||||
|
{
|
||||||
|
String result;
|
||||||
|
|
||||||
|
StringBuffer buffer = new StringBuffer(parameter.length());
|
||||||
|
|
||||||
|
char previousCar = NONE;
|
||||||
|
for (int charIndex = 0; charIndex < parameter.length(); charIndex++)
|
||||||
|
{
|
||||||
|
//logger.info("" + charIndex + " " + parameter.charAt(charIndex) + " " + (char) tab[parameter.charAt(charIndex)]);
|
||||||
|
char car = (char) rewritingParameterMapping[parameter.charAt(charIndex)];
|
||||||
|
if (car != NONE)
|
||||||
|
{
|
||||||
|
if ((car != '-') || ((car == '-') && (previousCar != '-')))
|
||||||
|
{
|
||||||
|
buffer.append(car);
|
||||||
|
previousCar = car;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (buffer.charAt(buffer.length() - 1) == '-')
|
||||||
|
{
|
||||||
|
buffer.setLength(buffer.length() - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
result = buffer.toString();
|
||||||
|
logger.info("[" + parameter + "] -> [" + result + "]");
|
||||||
|
//
|
||||||
|
return (result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method gives a way for a short rewriting URL format.
|
||||||
|
*
|
||||||
|
* Sometimes, URL has to be rewrited because we need to put parameter in the page name.
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* "/good/article.xhtm?id=123&class=today&title=story's about me"
|
||||||
|
* => rewriteShorturl("/good/article", "xhtml", "123", "Story's aboute me");
|
||||||
|
* => "/good/article-123-today-story-s-about-me.xhtml"
|
||||||
|
*/
|
||||||
|
static public String rewriteShortUrl(String uri, String extension, String... parameters)
|
||||||
|
{
|
||||||
|
String result;
|
||||||
|
|
||||||
|
StringList string = new StringList();
|
||||||
|
|
||||||
|
string.append(uri);
|
||||||
|
|
||||||
|
for (String parameter : parameters)
|
||||||
|
{
|
||||||
|
// Not use of String.replaceAll() method in goal to optimize Pattern compile action.
|
||||||
|
//string.append("-").append(REWRITE_PARAMETER.matcher(parameter.toLowerCase()).replaceAll("-"));
|
||||||
|
string.append("-").append(rewriteParameter(parameter));
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((extension != null) && (extension.length() != 0))
|
||||||
|
{
|
||||||
|
string.append(".").append(extension);
|
||||||
|
}
|
||||||
|
|
||||||
|
result = string.toString();
|
||||||
|
|
||||||
|
//
|
||||||
|
return(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extract value from a path.
|
* Extract value from a path.
|
||||||
* Example:
|
* Example:
|
||||||
* "/article-123.xhtml" => "123".
|
* "/article-123.xhtml" => "123".
|
||||||
*/
|
*/
|
||||||
static public String rewritedParameter(String path)
|
static public String[] shortRewritedUrlParameters(String path)
|
||||||
{
|
{
|
||||||
String result;
|
String[] result;
|
||||||
|
|
||||||
Matcher matcher = Pattern.compile("^.+-(\\d+)\\.xhtml$").matcher(path);
|
Matcher matcher = SHORT_REWRITED_URL_PARAMETERS.matcher(path);
|
||||||
if (matcher.matches())
|
if (matcher.matches())
|
||||||
{
|
{
|
||||||
//logger.debug("group 1=[" + matcher.group(1) + "]");
|
if (matcher.groupCount() != 1)
|
||||||
result = matcher.group(1);
|
{
|
||||||
|
result = null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result = matcher.group(1).split("-");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result = null;
|
result = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
@ -406,20 +544,87 @@ public class SimpleServletDispatcher extends HttpServlet
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static public String rewritedParameter(HttpServletRequest request)
|
static public String[] shortRewritedUrlParameters(HttpServletRequest request)
|
||||||
|
{
|
||||||
|
String[] result;
|
||||||
|
|
||||||
|
result = shortRewritedUrlParameters(request.getRequestURI());
|
||||||
|
|
||||||
|
//
|
||||||
|
return(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return value of the first parameter.
|
||||||
|
*/
|
||||||
|
static public String shortRewritedUrlParameter(String path)
|
||||||
{
|
{
|
||||||
String result;
|
String result;
|
||||||
//logger.debug("uri=[" + request.getRequestURI() + "]");
|
|
||||||
Matcher matcher = URL_PARAMETER_PATTERN2.matcher(request.getRequestURI());
|
String[] results = shortRewritedUrlParameters(path);
|
||||||
if (matcher.matches())
|
|
||||||
{
|
if ((results == null) || (results.length == 0))
|
||||||
//logger.debug("group 1=[" + matcher.group(1) + "]");
|
|
||||||
result = matcher.group(1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
result = null;
|
result = null;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result = results[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
return(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
static public String shortRewritedUrlParameter(HttpServletRequest request)
|
||||||
|
{
|
||||||
|
String result;
|
||||||
|
|
||||||
|
result = shortRewritedUrlParameter(request.getRequestURI());
|
||||||
|
|
||||||
|
//
|
||||||
|
return(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method gives a way for a long rewriting URL format. Long as in REST.
|
||||||
|
*
|
||||||
|
* Sometimes, URL has to be rewrited because we need to put parameter in the page name.
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* "/good/give_file?id=123&filename=foo.jpg"
|
||||||
|
* => rewriteShorturl("/good/give_file", "123", "foo.jpg");
|
||||||
|
* => "/good/give_file-/123/foo.jpg"
|
||||||
|
*
|
||||||
|
* Note: "-/" is used to indicate the start of parameters.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
static public String rewriteLongUrl(String uri, String... parameters)
|
||||||
|
{
|
||||||
|
String result;
|
||||||
|
|
||||||
|
StringList string = new StringList();
|
||||||
|
|
||||||
|
string.append(uri).append("-");
|
||||||
|
if ((parameters == null) || (parameters.length == 0))
|
||||||
|
{
|
||||||
|
string.append("/");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (String parameter : parameters)
|
||||||
|
{
|
||||||
|
string.append("/").append(parameter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
result = string.toString();
|
||||||
|
|
||||||
//
|
//
|
||||||
return(result);
|
return(result);
|
||||||
|
@ -431,21 +636,25 @@ public class SimpleServletDispatcher extends HttpServlet
|
||||||
* Example:
|
* Example:
|
||||||
* "/article-/123/doors/open.xhtml" => "123", "doors" and "open".
|
* "/article-/123/doors/open.xhtml" => "123", "doors" and "open".
|
||||||
*/
|
*/
|
||||||
static public String[] rewritedParameters(String path)
|
static public String[] longRewritedUrlParameters(String path)
|
||||||
{
|
{
|
||||||
String[] result;
|
String[] result;
|
||||||
|
|
||||||
result = new String[10]; // STU.
|
result = path.substring(path.indexOf("-/") + 2).split("/");
|
||||||
Matcher matcher = Pattern.compile("^.+-(\\d+)\\.xhtml$").matcher(path);
|
|
||||||
if (matcher.matches())
|
//
|
||||||
{
|
return(result);
|
||||||
//logger.debug("group 1=[" + matcher.group(1) + "]");
|
}
|
||||||
result[0] = matcher.group(1); // STU.
|
|
||||||
}
|
|
||||||
else
|
/**
|
||||||
{
|
*
|
||||||
result = null;
|
*/
|
||||||
}
|
static public String[] rewritedUrlParameters(HttpServletRequest request)
|
||||||
|
{
|
||||||
|
String[] result;
|
||||||
|
|
||||||
|
result = longRewritedUrlParameters(request.getRequestURI());
|
||||||
|
|
||||||
//
|
//
|
||||||
return(result);
|
return(result);
|
||||||
|
|
|
@ -4,6 +4,8 @@ import javax.servlet.http.Cookie;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import fr.devinsy.kiss4web.CookieHelper;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -48,88 +50,6 @@ public class SimpleSecurityAgent
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
static public Cookie buildCookie (String name, String value, int duration)
|
|
||||||
{
|
|
||||||
Cookie result;
|
|
||||||
|
|
||||||
result = new Cookie (name, value);
|
|
||||||
result.setMaxAge (duration);
|
|
||||||
result.setPath ("/");
|
|
||||||
result.setSecure (false);
|
|
||||||
|
|
||||||
//
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
static public Cookie getCookie (Cookie[] cookies, String key)
|
|
||||||
{
|
|
||||||
Cookie result = null;
|
|
||||||
|
|
||||||
if (cookies == null)
|
|
||||||
{
|
|
||||||
result = null;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
boolean ended = false;
|
|
||||||
int cookieCounter = 0;
|
|
||||||
while (!ended)
|
|
||||||
{
|
|
||||||
if (cookieCounter < cookies.length)
|
|
||||||
{
|
|
||||||
if (key.equals (cookies[cookieCounter].getName ()))
|
|
||||||
{
|
|
||||||
ended = true;
|
|
||||||
result = cookies[cookieCounter];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cookieCounter += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ended = true;
|
|
||||||
result = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
static public Object getCookieValue (Cookie[] cookies, String key)
|
|
||||||
{
|
|
||||||
Object result;
|
|
||||||
|
|
||||||
Cookie cookie = getCookie(cookies, key);
|
|
||||||
|
|
||||||
if (cookie == null)
|
|
||||||
{
|
|
||||||
result = null;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result = cookie.getValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
return(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@ -137,7 +57,7 @@ public class SimpleSecurityAgent
|
||||||
{
|
{
|
||||||
String result;
|
String result;
|
||||||
|
|
||||||
result = (String) getCookieValue(request.getCookies (), this.userIdLabel);
|
result = (String) CookieHelper.getCookieValue(request, this.userIdLabel);
|
||||||
|
|
||||||
//
|
//
|
||||||
return(result);
|
return(result);
|
||||||
|
@ -151,7 +71,7 @@ public class SimpleSecurityAgent
|
||||||
{
|
{
|
||||||
String result;
|
String result;
|
||||||
|
|
||||||
result = (String) getCookieValue(request.getCookies (), this.accountIdLabel);
|
result = (String) CookieHelper.getCookieValue(request, this.accountIdLabel);
|
||||||
|
|
||||||
//
|
//
|
||||||
return(result);
|
return(result);
|
||||||
|
@ -166,7 +86,7 @@ public class SimpleSecurityAgent
|
||||||
{
|
{
|
||||||
String result;
|
String result;
|
||||||
|
|
||||||
result = (String) getCookieValue(request.getCookies (), this.authLabel);
|
result = (String) CookieHelper.getCookieValue(request, this.authLabel);
|
||||||
|
|
||||||
//
|
//
|
||||||
return(result);
|
return(result);
|
||||||
|
@ -227,9 +147,10 @@ public class SimpleSecurityAgent
|
||||||
// Refresh cookie.
|
// Refresh cookie.
|
||||||
int duration = 60*60;
|
int duration = 60*60;
|
||||||
String auth = computeAuth(String.valueOf(accountId), userId, request.getRemoteAddr(), this.secretKey);
|
String auth = computeAuth(String.valueOf(accountId), userId, request.getRemoteAddr(), this.secretKey);
|
||||||
response.addCookie (buildCookie(this.authLabel, auth, duration));
|
|
||||||
response.addCookie (buildCookie(this.accountIdLabel, accountId, duration));
|
response.addCookie (CookieHelper.buildCookie(this.authLabel, auth, duration));
|
||||||
response.addCookie (buildCookie(this.userIdLabel, userId, duration));
|
response.addCookie (CookieHelper.buildCookie(this.accountIdLabel, accountId, duration));
|
||||||
|
response.addCookie (CookieHelper.buildCookie(this.userIdLabel, userId, duration));
|
||||||
|
|
||||||
logger.info("set [" + auth + "," + accountId + "," + userId + "," + request.getRemoteAddr() + ")");
|
logger.info("set [" + auth + "," + accountId + "," + userId + "," + request.getRemoteAddr() + ")");
|
||||||
}
|
}
|
||||||
|
@ -240,8 +161,8 @@ public class SimpleSecurityAgent
|
||||||
*/
|
*/
|
||||||
public void reset(HttpServletRequest request, HttpServletResponse response)
|
public void reset(HttpServletRequest request, HttpServletResponse response)
|
||||||
{
|
{
|
||||||
response.addCookie(buildCookie(this.authLabel, "", 0));
|
CookieHelper.reset(response, this.authLabel);
|
||||||
response.addCookie(buildCookie(this.accountIdLabel, "", 0));
|
CookieHelper.reset(response, this.accountIdLabel);
|
||||||
response.addCookie(buildCookie(this.userIdLabel, "", 0));
|
CookieHelper.reset(response, this.userIdLabel);
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue