0

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

4

2 回答 2

0

您在 sfBasicSecurityUser 中有一个函数可以告诉您用户是否已连接

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

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

在将用户重定向到登录系统之前,您可以使用 ->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');
于 2012-05-03T07:41:42.980 回答
0

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

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

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

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

然后您可以检查是否存在用户对象...

于 2012-05-03T08:16:56.100 回答