in web/src/main/java/org/apache/shiro/web/session/mgt/DefaultWebSessionManager.java [168:215]
private String getUriPathSegmentParamValue(ServletRequest servletRequest, String paramName) {
if (!(servletRequest instanceof HttpServletRequest)) {
return null;
}
HttpServletRequest request = (HttpServletRequest) servletRequest;
String uri = request.getRequestURI();
if (uri == null) {
return null;
}
int queryStartIndex = uri.indexOf('?');
//get rid of the query string
if (queryStartIndex >= 0) {
uri = uri.substring(0, queryStartIndex);
}
//now check for path segment parameters:
int index = uri.indexOf(';');
if (index < 0) {
//no path segment params - return:
return null;
}
//there are path segment params, let's get the last one that may exist:
final String token = paramName + "=";
//uri now contains only the path segment params
uri = uri.substring(index + 1);
//we only care about the last JSESSIONID param:
index = uri.lastIndexOf(token);
if (index < 0) {
//no segment param:
return null;
}
uri = uri.substring(index + token.length());
//strip off any remaining segment params:
index = uri.indexOf(';');
if (index >= 0) {
uri = uri.substring(0, index);
}
//what remains is the value
return uri;
}