Zend Framework 2 Doctrine ORM身份验证

时间:2013-12-16 17:53:47

标签: zend-framework authentication doctrine-orm doctrine zend-framework2

我正在用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中访问吗?是否可以使用两个字段 - 用户登录或电子邮件登录?

提前感谢您的帮助。

已更新:我一直在搜索,结果thisthis帮助了我很多 一个问题,我还没有解决。如何使用doctrine适配器检查用户状态(是否激活)? 像

$authAdapter = new AuthAdapter($dbAdapter,'user','username','password','MD5(?) AND status = 1');

2 个答案:

答案 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/ZfcUserhttps://github.com/SocalNick/ScnSocialAuth或整个模块存储库http://modules.zendframework.com/?query=user。即使你不安装只是下载,看看其他人做什么。