我已经开始与silex合作一个项目……我进行了身份验证,一切正常。但是现在,我想获取一些用户数据,并且在自定义UserProvider中使用的User类(从此示例Silex doc-定义自定义User Provider)是最终的,因此无法覆盖它。我打算使用loadUserByUsername()中的查询来获取所有信息,以限制对数据库的访问。
是改写Symfony \ Component \ Security \ Core \ User的正确方法,还是我必须另设一个usermanager,如果是,则如何正确进行操作?
谢谢
通过添加类似的方法,覆盖自定义UserProvider是正确的方法
和
public function buildObject(array $rowFromDatabase) {
$user = new MyUser();
$user->setId($row["id"]);
$user->setUsername($row["username"]);
$user->setSalt($row["salt"]);
$user->setRole($row["role"]);
$user->setPassword($row["password"]);
return $user;
}
其中MYUSER是你的POJO实现的UserInterface
那么您的loadUserByUsername将是
public function loadUserByUsername($username) {
$sql = "SELECT * FROM MyUserTable WHERE username = ?";
$row = $this->getDB()->fetchAssoc($sql, array($username));
if($row) {
return $this->buildDomainObject($row);
}else{
throw new UsernameNotFoundException(sprintf('User "%s" not found.', $username));
}
}
并限制与数据库的连接,可以使用DAO模式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句