[Twisted-web] Redirect after login with nevow guard
Peter Westlake
peter.westlake at pobox.com
Fri Jan 4 11:50:35 EST 2013
That's brilliant, thank you!
The bit I didn't know about was ICurrentSegments. I *think* I see how
this works :-)
Peter.
On Fri, Jan 4, 2013, at 16:32, Phil Mayers wrote:
> On 04/01/13 16:00, Peter Westlake wrote:
> > I'm using nevow.guard, and when someone logs in I would like to send
> > them to the URL they originally typed. It's possible to do this by
> > posting to the URL guard.LOGIN_AVATAR + other stuff, e.g. to go to
> > http://example.com/foo/bar after logging in, the login page should post
> > to http://example.com/__login__/foo/bar. This works nicely. The problem
> > is, the login page doesn't know that the user was trying to go to
> > foo/bar. How can it get that information? I would have thought that it
> > would be available as the segments argument in locateChild, but for some
> > reason it isn't. Before logging in, the segments argument is always
> > empty.
>
> Looking at some *very* old code, we have something like this:
>
>
> class LoginPage(rend.Page):
>
> def locateChild(self, c, s):
> return self, []
>
> def data_misc(self, ctx, data):
> u = url.root.child(guard.LOGIN_AVATAR)
> for path in inevow.ICurrentSegments(ctx):
> u = u.child(path)
> return {
> 'action': u
> }
>
>
> docFactory = loaders.stan(
> T.html[
> T.head[
> T.title['ICT Host Database - not logged in'],
> ], # head
> T.body(data=T.directive('misc'), render=T.directive('mapping'))[
> T.form(action=T.slot('action'), method='post')[
> ...
>
> components.registerAdapter(LoginPage, ihdb.IAnonymous, inevow.IResource)
>
>
> i.e. the component you register as the adapter for the "Anonymous" user
> needs a "data" method that gathers the url segments, and you reference
> that data method from the "action" value of the login form - so the form
> will be posted to:
>
> /$guard.LOGIN_AVATAR/original/url/goes/here
>
> _______________________________________________
> Twisted-web mailing list
> Twisted-web at twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web
More information about the Twisted-web
mailing list