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/