Hi, Have you looked at https://github.com/PerlDancer/Dancer2/issues/432 ? I think this is the same issue.
Bye, On Fri, Oct 4, 2013 at 11:29 PM, Cymon <[email protected]> wrote: > Hi, > what Dancer2 version are you using? > > I think I found a bug in the last master branch. > > In it, redirected response are configured with halted status > (Dancer2/Core/Context.pm, line 181. this is the commit: > > https://github.com/PerlDancer/Dancer2/commit/74528623aa5ff2738dd319cf70639e0b434a3f20 > ). > Problem is that in the dispatcher halted responses don't trigger the > after_request hook. > Session flush, in App.pm, is configured to happen on an after_request > hook, so I think this is the reason your code fails. > > Has anyone an idea about how to solve this? I'll try to think about it > too, but at the moment I have no solution... > > Gideon, if you want to go on with your app you can use this dark dark > dark dark magic: > > my $controller = sub { $dsl->session(user => "Yippikiayeeeh"); > my $redir = $dsl->redirect("/"); > $dsl->context->response->is_halted(0); > return $redir; > }; > > Obviously is a dirty workaround, I don't know all the side effects of > this. > > > Cymon > http://perlishscrewdriver.blogspot.it/ > > > > Il giorno Fri, 4 Oct 2013 20:55:05 +0530 > "Gideon D'souza" <[email protected]> ha scritto: > > > I found the source of the problem, and it still leaves me hanging. > > > > > > For some hideous reason, if I redirect after making the request for > > the users json data, the session is undef in the main application. > > However, if I don't redirect. Then goto the homepage from the > > browser, it accesses my session! :S > > > > > > my $jresp = > > $browser->get("https://api.github.com/user?access_token=$acc"); my > > $json = decode_json($jresp->decoded_content); > > $dsl->session(github_user => $json); #also tested by just setting a > > string instead of json! $dsl->session(github_access_token => $acc); > > return "done"; #This works fine! > > #but if I # return $dsl->redirect("/"); #it doesn't work ! > > > > > > And worst of all, if I take your code and do this: > > > > my $controller = sub { $dsl->session(user => "Yippikiayeeeh"); > > return $dsl->redirect("/");}; > > > > it works! but for me it doesn't me. The session goes undef. > > > > I tried it with a YAML backend and the default (simple session) > > > > > > > > > > On Fri, Oct 4, 2013 at 4:14 AM, Cymon <[email protected]> wrote: > > > > > I wrote a code similar to yours and it works for me. > > > > > > Here the routes: > > > > > > package Test; > > > use Dancer2; > > > use Dancer2::Plugin::Dummy; > > > > > > get '/' => sub { > > > > > > if (not defined(session->read('user'))) { > > > return "No user" > > > } > > > else > > > { > > > return "User is here" > > > } > > > }; > > > > > > 1; > > > > > > Here the dummy plugin: > > > > > > package Dancer2::Plugin::Dummy; > > > use Dancer2::Plugin; > > > > > > on_plugin_import { > > > my $dsl = shift; > > > my $controller = sub { $dsl->session(user => "Yippikiayeeeh"); > > > return "You have a user now!"}; > > > $dsl->any(['get'] => '/populate/session', $controller); }; > > > > > > register_plugin for_versions => [ 2 ]; > > > > > > > > > If I go to populate/session and the on the home I can see user > > > populated. > > > > > > What kind of session manager are you using? Are you sure it's > > > working well? > > > > > > Cymon > > > http://perlishscrewdriver.blogspot.it/ > > > > > > > > > > > > > > > > > > Il giorno Fri, 4 Oct 2013 00:36:23 +0530 > > > "Gideon D'souza" <[email protected]> ha scritto: > > > > > > > Tried it, It still goes into a redirect loop because the session > > > > is always undef the sub for "/". > > > > > > > > :( I'd really appreciate anyone just peeing into this! > > > > > > > > > > > > On Tue, Oct 1, 2013 at 4:48 AM, Slavik Goltser <[email protected]> > > > > wrote: > > > > > > > > > Doesn't that get ignored in Dancer2? > > > > > > > > > > > > > > > On Mon, Sep 30, 2013 at 6:51 PM, Cymon <[email protected]> > > > > > wrote: > > > > > > > > > >> Hi, > > > > >> i tried your code. > > > > >> > > > > >> Did you remember to add: > > > > >> > > > > >> register_plugin for_versions => [ 2 ]; > > > > >> > > > > >> at the end of the plugin? > > > > >> It will not work without this. > > > > >> > > > > >> Cymon > > > > >> http://perlishscrewdriver.blogspot.it/ > > > > >> > > > > >> Il giorno Sun, 29 Sep 2013 22:55:05 +0530 > > > > >> "Gideon D'souza" <[email protected]> ha scritto: > > > > >> > > > > >> > Thank you very much for your time. > > > > >> > > > > > >> > I tried it. No luck still. > > > > >> > > > > > >> > If I may bother you so: > > > > >> > > > > > >> > on_plugin_import { > > > > >> > my $dsl = shift; > > > > >> > my $controller = sub { ...; ...; $dsl->session(user => > > > > >> > $some_json);} $dsl->any(['get'] => '/your/path', > > > > >> > $controller); } > > > > >> > > > > > >> > in app that uses this plugin: > > > > >> > > > > > >> > get '/' => sub { > > > > >> > > > > > >> > if (not defined(session->read('user'))) { > > > > >> > ###### > > > > >> > #session->Read('user') is always undef!!! > > > > >> > ###### > > > > >> > return redirect auth_github_authenticate_url; > > > > >> > } > > > > >> > }; > > > > >> > > > > > >> > Any clues here? > > > > >> > > > > > >> > > > > > >> > On Sun, Sep 29, 2013 at 6:49 PM, Cymon <[email protected]> > > > > >> > wrote: > > > > >> > > > > > >> > > > > > > >> > > > > > > > >> > > > Is there a way to add routes inside a plugin, on init or > > > > >> > > > something like that? Or perhaps it's something else I've > > > > >> > > > missed? > > > > >> > > > > > > > >> > > > Any reply or pointers appreciated. > > > > >> > > > > > > >> > > Hi, > > > > >> > > I have no time to try your code now and help you with your > > > > >> > > issue, but I can answer this. > > > > >> > > > > > > >> > > To add routes inside a plugin just define the > > > > >> > > on_plugin_import sub in your plugin package as this. > > > > >> > > > > > > >> > > on_plugin_import { > > > > >> > > my $dsl = shift; > > > > >> > > my $controller = sub { ...do things ... } > > > > >> > > $dsl->any(['get'] => '/your/path', $controller); > > > > >> > > } > > > > >> > > > > > > >> > > > > > > >> > > -- > > > > >> > > Cymon > > > > >> > > http://perlishscrewdriver.blogspot.it/ > > > > >> > > _______________________________________________ > > > > >> > > dancer-users mailing list > > > > >> > > [email protected] > > > > >> > > http://lists.preshweb.co.uk/mailman/listinfo/dancer-users > > > > >> > > > > > > >> > > > > >> > > > > >> -- > > > > >> Cymon > > > > >> Coniglio domina, > > > > >> http://www.therabbit.it > > > > >> _______________________________________________ > > > > >> dancer-users mailing list > > > > >> [email protected] > > > > >> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users > > > > >> > > > > > > > > > > > > > > > _______________________________________________ > > > > > dancer-users mailing list > > > > > [email protected] > > > > > http://lists.preshweb.co.uk/mailman/listinfo/dancer-users > > > > > > > > > > > > > > > > > > > -- > > > Cymon > > > Coniglio domina, > > > http://www.therabbit.it > > > _______________________________________________ > > > dancer-users mailing list > > > [email protected] > > > http://lists.preshweb.co.uk/mailman/listinfo/dancer-users > > > > > > -- > Cymon > Coniglio domina, > http://www.therabbit.it > _______________________________________________ > dancer-users mailing list > [email protected] > http://lists.preshweb.co.uk/mailman/listinfo/dancer-users > -- Pedro Melo @pedromelo http://www.simplicidade.org/ xmpp:[email protected] mailto:[email protected]
_______________________________________________ dancer-users mailing list [email protected] http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
