problem with skipping filter?

V

vj

I am trying to skip going through filter in my code if certain
condition met(i.e. rss.xml or rss.rdf)
But after doing all kind of R&d i am unable to make it.
My tried code is mentioned below.
any modifications suggested.

if(totaluri.endsWith("rss.rdf") && auth_string==null){
in this line i am trying to make this but it always gpes to
if(auth_string==null){
where authecation is must.
My ultimate goal is to read rss.xml/rdf in rs reader which is present
outside the program.
where i can't pass username and password stuff.

public void doFilter(ServletRequest request, ServletResponse
servletresponse, FilterChain chain)
throws IOException, ServletException {
// Create wrappers for the request and response objects.
// Using these, you can extend the capabilities of the
// request and response, for example, allow setting parameters
// on the request before sending the request to the rest of the
filter chain,
// or keep track of the cookies that are set on the response.
//
// Caveat: some servers do not handle wrappers very well for
forward or
// include requests.

HttpServletRequest hsr=(HttpServletRequest)request;
HttpServletResponse
response=(HttpServletResponse)servletresponse;

HttpSession hs=hsr.getSession();

String auth_string=(String)hs.getAttribute("Authentication");

String contextpath=hsr.getContextPath();
String querystring=hsr.getQueryString();

String host_address=getHostAddress(hsr);
String totaluri=hsr.getRequestURI()+querystring;
totaluri=totaluri.replaceAll("//","/");

if(totaluri.endsWith("rss.rdf") && auth_string==null){
hs.setAttribute("Authentication", "Validating");
hs.setAttribute("uri",totaluri);

response.setContentType("text/html");
response.setHeader("Cache-Control","no-cache");//For HTTP
1.1
response.setHeader("Pragma","no-cache"); //For HTTP 1.0
response.setDateHeader ("Expires", -1);

PrintWriter pw=response.getWriter();
pw.println("<html>");
pw.println("<head><META HTTP-EQUIV='PRAGMA'
CONTENT=''NO-CACHE'></head>");
pw.println("<body onload=document.g.submit();>");
pw.println("<form name=g>");
pw.println("<input type=hidden name=glink
value='http://"+host_address+hsr.getContextPath()+"/LoginServlet' >");
pw.println("</form>");
pw.println("<script>");
pw.println("document.g.glink.value = document.g.glink.value
;");
pw.println("</script>");
pw.println("</body>");
pw.println("</html>");
pw.close();
return;
}

else if(auth_string==null) {
hs.setAttribute("Authentication", "Validating");
String context_path=hsr.getContextPath();
String query_string=hsr.getQueryString();
if(query_string == null)
query_string="";
else
query_string="?"+query_string;

String hostaddress=getHostAddress(hsr);
String total_uri=hsr.getRequestURI()+query_string;
total_uri=total_uri.replaceAll("//","/");

hs.setAttribute("uri",total_uri);

response.setContentType("text/html");
response.setHeader("Cache-Control","no-cache");//For HTTP
1.1
response.setHeader("Pragma","no-cache"); //For HTTP 1.0
response.setDateHeader ("Expires", -1);

PrintWriter pw=response.getWriter();
pw.println("<html>");
pw.println("<head><META HTTP-EQUIV='PRAGMA'
CONTENT=''NO-CACHE'></head>");
pw.println("<body onload=document.g.submit();>");
pw.println("<form name=g
action='http://canetportalauth.ca.com/ntlmcp.asp' method=post>");
pw.println("<input type=hidden name=glink
value='http://"+hostaddress+hsr.getContextPath()+"/LoginServlet' >");
pw.println("</form>");
pw.println("<script>");
pw.println("document.g.glink.value = document.g.glink.value
;");
pw.println("</script>");
pw.println("</body>");
pw.println("</html>");
pw.close();
return;

} else if(auth_string.equals("Validated")) {
String username=(String)hs.getAttribute("USERNAME");
RequestWrapper wrappedRequest = new
RequestWrapper((HttpServletRequest)request, username);
chain.doFilter(wrappedRequest, response);
} else if(auth_string.equals("Validating") &&
hsr.getRequestURI().replaceAll("//","/").equals(new
String(hsr.getContextPath()+"/LoginServlet").replaceAll("//", "/")))
{
chain.doFilter(request,response);
} else {
response.setContentType("text/html");
PrintWriter pw=response.getWriter();
pw.println("</html>");
pw.println("<body>");
pw.println("Authentication failed.. Please try again. If it
does not work, please close your browser and try again");
pw.println("</body>");
pw.println("</html>");
pw.close();
return;
}
}



thanks
vijendra
 
M

Manish Pandit

Hi,

This logic (checking for uri.endsWith) does not belong in the filter -
that is what filter-mapping is for.

Look at the <filter-mapping> element in web.xml. You can configure it
to only pass the URL patterns you need the filter to receive. For
example, you can use *.jsp or *.do in the <url-pattern> sub-element.
The filter will only be involved when the mapping qualifies - do not
include *.rss or *.rdf and you'd be fine.

http://e-docs.bea.com/wls/docs81/webapp/web_xml.html

-cheers,
Manish
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,981
Messages
2,570,188
Members
46,733
Latest member
LonaMonzon

Latest Threads

Top