On Sun, 28 Dec 2008, André Warnier wrote: > > > > But when they come back from the OpenID server, how > > > > do I put the saved request body or post params into > > > > the new request? > > > In Apache2::AuthCookie, the author uses a trick : convert > your POST to a GET see the sub convert_to_get().
No, that's not what I want. What if it's a PUT, or something else? I want it to replace the body of the authenticated request with the body of the request that was saved from when they clicked but were not authenticated. > I don't think that using $r->connection->pnotes is a very > safe bet in this case, because with Keep-Alive you never > know when the maximum number of requests for this > connection will be be exhausted, or do you ? Yeah, I don't want people to have to depend on Keep-Alive, especially if it is running on a cluster or behind a load balancer or something. > Regarding the avoidance of the browser's own login popup > dialog : This dialog pops up when the server sends back a > 401 response (unauthorised), with a header indicating that > it needs a Basic or Digest authentication. Thus, if you > arrange for your authentication method to send back a > login page instead (with a 200 OK code), the browser will > show your login form, and not its own dialog. It didn't seem to work correctly when I ran it as a PerlAuthenHandler. I'll try that again though. > To save in the meantime the original request, there are > several possibilities Yeah, the thing is that I want the mechanism to be agnostic to the type of request. It doesn't have to depend on any parseable parameters from a POST. I want it to replicate the request body no matter what, for example, if the raw request body is an XML entity being set with a PUT request, the client should redirect through the auth server and should not have to re-send the original request. "Magic." So it's looking like this: - user logs in, does stuff, goes to get coffee - user comes back, clicks 'submit' on whatever form - session is idle: - reads and stores raw request body from bb's - saves the method number - redirects to openid server - openid server redirects to GET return url - original method number restored - installs input filter to replace bb's with contents of preserved request body The question is, since the handler doing the preservation and installing the input filter also instantiates an Apache2::Request object, when it gets to the response phase controller, will the response handler's Apache2::Request instance read the replaced data or the cached data? Sessions under the framework are required for the authentication handler to work at all, so I just go ahead an attach one anyway, prior to authentication. I guess this might not be a good idea or would expose to DoS? Hrmm. I don't really want to factor that out. I'll think about it. Maybe the request body preservation should only happen by default if they already had a session authenticated but only timed out. Mark