在 silex 中获取用户数据的最佳实践是啥?

Posted

技术标签:

【中文标题】在 silex 中获取用户数据的最佳实践是啥?【英文标题】:What is the best practice to get user data in silex?在 silex 中获取用户数据的最佳实践是什么? 【发布时间】:2015-08-15 13:18:10 【问题描述】:

我已经使用 silex 开始了一个项目……我进行了身份验证,一切正常。但是现在,我想获取我的一些用户数据,并且我在自定义 UserProvider 中使用的 User 类(来自此示例 Silex doc - Defining a custom User Provider)是最终的,所以我无法覆盖它。 我打算使用 loadUserByUsername() 中的查询来获取所有信息,以限制对数据库的访问。

重写 Symfony\Component\Security\Core\User 是正确的方式还是我必须创建另一个用户管理器,如果是,如何正确地执行?

谢谢

【问题讨论】:

【参考方案1】:

通过添加类似的方法覆盖您的自定义 UserProvider 是正确的方法

查找($UserId) findAll() 保存($user) 删除($UserId)

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 模式。

【讨论】:

以上是关于在 silex 中获取用户数据的最佳实践是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Tensorflow:从问题中获取手册的一部分的最佳实践是啥?

在 CloudKit 中获取 CKReferences 的最佳实践方法是啥?

Laravel 数据库日志 - 最佳实践是啥

在 C# Web api 上进行用户身份验证的最佳实践是啥?

在 Win32 Delphi 应用程序中存储用户首选项和设置的最佳实践是啥?

将特定页面限制为仅在 Codeigniter 中登录用户的最佳实践是啥?