【发布时间】:2018-07-27 11:17:32
【问题描述】:
我正在为类似于 Uber 的应用程序设计架构和数据库。而且我坚持设计User 实体并创建自定义用户提供程序。 Userdriver和customer有两种类型。用户可以将他的电子邮件注册为driver 和customer。
是否有好的阅读或项目可以让我了解创建具有多种用户类型的应用的最佳方法。
这是我目前想出的:
我从抽象的User 实体开始
/**
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="discr", type="string")
* @ORM\DiscriminatorMap({"customer" = "Customer", "driver" = "Driver"})
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
*/
abstract class User {
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
protected $id;
}
Customer 类看起来像:
class Customer extends User
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
protected $id;
/**
* @var string
*
* @ORM\Column(type="string", nullable=false, name="email", unique=true)
*/
protected $email;
Driver类:
class Driver extends User
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
protected $id;
/**
* @var string
*
* @ORM\Column(type="string", nullable=false, name="email", unique=true)
*/
protected $email;
但是我不确定这个用户实体结构是否是一个好主意。但是,如果我继续使用这个数据库模型,那么用户授权的最佳策略是什么?
我打算使用 FOS oAuth 来保证安全。为每种类型的User 设置单独的防火墙会更好吗?
【问题讨论】:
标签: php symfony fosuserbundle symfony4 fosoauthserverbundle