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