Hi all. I have started using restlet since last month and am impressed with the
simplicity it offers.

However, I bumped into a problem with using Guards earlier and could not figure
out a good way to get around it.

Basically I have one Restlet "TestRestlet" that handles both GET and POST
requests. However, they have different URI patterns.

For example, GET request would have pattern of /testGet/user/{userId}
and POST request would have pattern of /testPost

Hence if I type http://localhost:8080/testGet/user/ABC, the request would be
mapped to the GET handling of the TestRestlet and it would return, say a form in
html format and the use can click submit on that form which points to
http://localhost:8080/testPost

I have one single Guard:

Guard testGuard= new TestGuard(getContext()
                , ChallengeScheme.HTTP_BASIC
                , "test Access Control"; //my TestGuard class, same as Guard...
Restlet testRestlet = new TestRestlet(getContext());
testGuard.setNext(testRestlet);
router.attach("/testGet/user/{userId}", testGuard);
router.attach("/testPost", testGuard);


Now, if I access /testGet/user/ABC, it would ask me for authentication (401
response), which is fine. After I input the user name and password, it would
then return the html form which points to /testPost (which is fine too). Now, if
I submit that form, I would get 401 response again...and the web browser
obviously was confused (keep saying loading) and its stuck.

My expectation is that the server should not give 401 status code the 2nd time
(since it has already authenticated on the GET request and they are sharing the
same Guard). The funny part is that if I change the pattern
"/testGet/user/{userId}" into just "/testGet" then all goes fine...

I am not sure if its a bug or if its some stupid problem that I made...can
anyone plz gimme some pointers plz?

The Restlet jar I am using is the version 3.1 one. The server is the Simple
server and Simple Framework.

Many thanks in advance!!!
 

Reply via email to