如何检查用户是否登录或未登录Symfony?

时间:2012-05-03 07:08:20

标签: session symfony1 symfony-1.4

我正在为我的最后一年项目创建一个职位门户。当他/她点击“应用”按钮检查用户是否使用系统登录时,我需要在求职者申请特定空缺时进行会话。如果他已登录,则用户可以继续申请并上传简历。否则他应该注册一个系统,当点击应用页面应该重定向到注册页面。那么我怎么能用symfony做到这一点? 是否有可能在“应用”按钮内执行此会话部分..我不太熟悉symfony ..请帮助

2 个答案:

答案 0 :(得分:0)

你在sfBasicSecurityUser中有一个函数告诉你if the user is connected

// in template
$sf_user->isAuthenticated();

// in action
$this->getUser()->isAuthenticated();

在将用户重定向到登录系统之前,您可以存储引用者using ->getReferer()

$request->getReferer();

如果可以,请使用sfGuardDoctrinePlugin来处理您的用户管理(用户,群组,权限,登录,注册等)。

修改

因此,在您的登录操作中,您可以添加以下内容:

// store the referer url in the session for a future use, if it's doesn't already exists
if($this->getUser()->getAttribute('referer_url', null, 'login'))
{
  $this->getUser()->setAttribute('referer_url', $request->getReferer(), 'login');
}

在您的登录操作中:

// retrieve the referer in session, otherwise the one in request, otherwise redirect to homepage
$signinUrl = $this->getUser()->getAttribute('referer_url', $request->getReferer(), 'login');
$this->getUser()->getAttributeHolder()->remove('referer_url');

return $this->redirect('' != $signinUrl ? $signinUrl : '@homepage');

编辑2:

如果您想要自定义重定向,请在重定向到登录页面之前进行设置:

$this->getUser()->setAttribute('referer_url', 'my/custom/url', 'login');

答案 1 :(得分:0)

如果您手动存储用户会话:

// in action<br>
$this->getUser()->setAttribute('user', $user);

你可以像这样检查这个用户:

// in action
$this->getUser()->getAttribute('user');

然后你可以检查用户对象的存在...