我正在为一个类似于Uber的应用程序设计架构和数据库。我一直在设计User实体和创建自定义用户提供程序。User driver和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都有单独的防火墙是不是更好
发布于 2018-07-27 19:32:31
您应该考虑基于角色的方法,而不是基于类型的设计
如果您需要多态查询和关系,则连接策略可能是您的最佳选择
这样,用户可以将他的电子邮件注册为司机和客户。用户A具有角色DRIVER_ROLE、USER_ROLE
https://stackoverflow.com/questions/51556847
复制相似问题