我使用symfony 1.4和带有Propel的sfGuard,考虑到这是我第一次体验symfony,我对这个架构的某些部分仍然是个新手。
我被要求创建一些网络服务,其中之一将采取用户(电子邮件)和密码,并打印出一个json字符串反馈的结果。
我不知道如何使用sfGuard执行这样的任务,所以如果有人有一个例子,我将不胜感激。
我认为算法应该是sha1,因为在sf_guard_user表中我发现像这样的行
id username algorithm salt password created_at last_login is_active is_super_admin
4 myuser@myhostname.com sha1 623de866b49c696b452e0d12b55895c8 dcbe87a60a769b9e3b5f0988141b824fa5206235 2011-12-06 02:32:43 2011-12-27 15:49:41 1 0发布于 2011-12-28 00:33:07
好吧,我发现了一个肮脏的把戏,但它是有效的。
我可以伪造一个登录表单提交,并将其转换为通常的登录模式,如下所示:
$request->setParameter('signin', array(
'username' =>$request->getParameter("username"),
'password' =>$request->getParameter("password"),
));
$form = new BeetleLoginForm();
$form->bind($request->getParameter('signin'));
if ($form->isValid()) {
$values = $form->getValues();
$this->getUser()->signin($values['user'], false);
$resp['return'] = "YES";
$resp['message'] = "You have successfully logged in";
return $this->renderText(json_encode($resp));
}我希望这能帮助那些陷入同样困境的人。
发布于 2011-12-28 00:19:24
看看sfGuardValidatorUser类就知道了。基本上是这样的:
sfGuardUser类中的checkPassword公共方法检查密码(默认值类似于sfGuardUserhttps://stackoverflow.com/questions/8646378
复制相似问题