JWT 令牌的 UniqueConstraint - 怎么做?
UniqueConstraint for JWT token - how to?
我的环境:
lexik_jwt_authentication:
user_identity_field: phoneNumber
security:
providers:
chain_provider:
chain:
providers: ['fos_userbundle', 'app_user_provider']
fos_userbundle:
id: fos_user.user_provider.username
app_user_provider:
entity:
class: App\Entity\User
property: phoneNumber
在App\Entity\User
/**
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
* @ORM\Table(
* name="`user`",
* uniqueConstraints={
* @ORM\UniqueConstraint(name="project_phoneNumber", columns={"project_id", "phone_number"})
* }
* )
* @ORM\HasLifecycleCallbacks()
* @JMS\ExclusionPolicy("all")
* @Vich\Uploadable
*/
所以问题是 phoneNumber 对于用户不再是唯一的。
是否可以在 jwt 中使用 project_phoneNumber 作为用户身份?
您尝试做的是复合主键。
这是在数据库级别进行操作的一种非常好的方法。
所以你想要的方式就是好的方式。
问题是,尽管学说说他们 :
...took good care to make sure Doctrine ORM supports as many of the composite primary key use-cases
https://www.doctrine-project.org/projects/doctrine-orm/en/2.8/tutorials/composite-primary-keys.html
当您面对复合主键的一个不受支持的功能时(例如:当您想要对具有复合主键的两个实体执行 manyToMany 时...),这实际上是一个真正的痛苦。
所以我建议做的是始终使用 id 作为主键,即使它会违反 1NF。
这是一个可以接受的违规行为...我的意思是不适合我,但没有其他方法可以处理复杂的实体关系。
因此,如果您想碰碰运气,可以 implement a composite primary key 然后删除由主键本身处理的唯一约束。
否则,只需使用一个简单的自动递增 ID 就可以了(因此请保持您的唯一约束)。
我的环境:
lexik_jwt_authentication:
user_identity_field: phoneNumber
security:
providers:
chain_provider:
chain:
providers: ['fos_userbundle', 'app_user_provider']
fos_userbundle:
id: fos_user.user_provider.username
app_user_provider:
entity:
class: App\Entity\User
property: phoneNumber
在App\Entity\User
/**
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
* @ORM\Table(
* name="`user`",
* uniqueConstraints={
* @ORM\UniqueConstraint(name="project_phoneNumber", columns={"project_id", "phone_number"})
* }
* )
* @ORM\HasLifecycleCallbacks()
* @JMS\ExclusionPolicy("all")
* @Vich\Uploadable
*/
所以问题是 phoneNumber 对于用户不再是唯一的。 是否可以在 jwt 中使用 project_phoneNumber 作为用户身份?
您尝试做的是复合主键。
这是在数据库级别进行操作的一种非常好的方法。 所以你想要的方式就是好的方式。
问题是,尽管学说说他们 :
...took good care to make sure Doctrine ORM supports as many of the composite primary key use-cases https://www.doctrine-project.org/projects/doctrine-orm/en/2.8/tutorials/composite-primary-keys.html
当您面对复合主键的一个不受支持的功能时(例如:当您想要对具有复合主键的两个实体执行 manyToMany 时...),这实际上是一个真正的痛苦。
所以我建议做的是始终使用 id 作为主键,即使它会违反 1NF。
这是一个可以接受的违规行为...我的意思是不适合我,但没有其他方法可以处理复杂的实体关系。
因此,如果您想碰碰运气,可以 implement a composite primary key 然后删除由主键本身处理的唯一约束。
否则,只需使用一个简单的自动递增 ID 就可以了(因此请保持您的唯一约束)。