我正在用ZF2和Doctrine ORM开发我的第一个真实项目。我无法通过doctrine orm身份验证适配器找到任何用户身份验证的好例子。现在我正在使用标准的Zend Db Adapter身份验证。另外,我用
$adapter->setIdentityColumn(filter_var($request->getPost('useremail'),FILTER_VALIDATE_EMAIL) ? 'useremail' : 'userlogin');
在我的登录控制器中通过电子邮件登录并登录。
但我想通过学说ORM完成所有工作。有人能用doctrine.authentication.orm_default向我展示一个类似的例子,并将用户身份数据存储在会话/存储中以便在任何控制器或module.php中访问吗?是否可以使用两个字段 - 用户登录或电子邮件登录?
提前感谢您的帮助。
已更新:我一直在搜索,结果this和this帮助了我很多 一个问题,我还没有解决。如何使用doctrine适配器检查用户状态(是否激活)? 像
$authAdapter = new AuthAdapter($dbAdapter,'user','username','password','MD5(?) AND status = 1');
答案 0 :(得分:3)
您可以使用credential_callable选项(Doctrine Module doc.)。它可以是任何可调用的(PHP Manual),例如带闭包:
'credential_callable' => function(User $user, $passwordGiven) {
return md5($passwordGiven) == $user->getPassword() && $user->isActive();
},
或使用静态类方法:
'credential_callable' => 'Application\User\UserService::verifyUser'
答案 1 :(得分:0)
外部模块的想法怎么样?如果您对此感到满意,可以查看https://github.com/ZF-Commons/ZfcUser和https://github.com/SocalNick/ScnSocialAuth或整个模块存储库http://modules.zendframework.com/?query=user。即使你不安装只是下载,看看其他人做什么。