Good afternoon,

On 15/11/10 at 10:03 AM +0800, woosley. xu. <[email protected]> wrote:

Caught exception in SEA::Controller::User->get "Can't call method "id"
on an undefined value


What is the problem with this code?

I've never bothered to find out why, but I've run into situations where $c->user_exists returns true and $c->user returns false. I just check for defined($c->user) instead and that solved it for me.

I also agree with other users that auto is a better place to do that check.

First I use this piece of code to make sure that a user is logged in, if
not, the use will be forward to the login page, and I assume after login, it
will return back to the original page

You need to handle that yourself. Save the current URI in the session before redirecting to login page, and then redirect to session-saved URI after successful $c->authenticate.

  $c->session->{login_back} = $c->req->uri
unless ($c->action =~ /^(login|logout|rest\/)/ || $c->action eq '/');

And then after authenticate (simplified code, may not work as-is):

$c->response->redirect( delete $c->session->{login_back} || $c->uri_for_action('/index') );


Charlie

--
   Ꮚ Charlie Garrison ♊ <[email protected]>

O< ascii ribbon campaign - stop html mail - www.asciiribbon.org
〠  http://www.ietf.org/rfc/rfc1855.txt

_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/

Reply via email to