gpt4 book ai didi

laravel - 将 Laravel 多授权用户视为一个独特的用户类

转载 作者:行者123 更新时间:2023-12-05 07:29:06 25 4
gpt4 key购买 nike

我已经为这个问题苦苦挣扎了几天,我到处搜索但找不到合乎逻辑的解决方案。

我的项目中需要多种类型的用户(管理员、客户),因为每种类型都需要完全不同的后端逻辑。所以我决定在 laravel 中使用多重身份验证方法(AFAIK 是这些情况下的最佳解决方案)。因此,我为每种类型(以及数据库中的多个表)设置了多个用户类,包括 AdminUser 类。 AdminAuthUserAuth 类管理登录和注册逻辑,路由使用中间件处理。

到目前为止没有问题。问题是我需要在另一个类中使用单个用户类。例如考虑消息传递逻辑(并且有许多类似的用例):

消息类模型应该有:

protected $fillable = [
'from_id', 'to_id', 'content', 'state'
];

public function sender(){
return $this->belongsTo(**User::class**);
}

public function receiver(){
return $this->belongsTo(**User::class**);
}
...

在上面的模型中,我需要为发送者和接收者指定User::class,可以是管理员也可以是用户。那么我如何告诉 Eloquent 使用这两种模型。有可能吗?如果不是,这里的解决方案是什么?

我想过使用一个名为 Person 的更高级别的类,例如,来保存 Admin 或 User 对象实例,但这样 ORM 无法设法自动从/在适当的表中检索或存储用户。

非常感谢任何建议。

最佳答案

我建议您使用以下准则来处理此类功能;为每种用户类型创建一个模型,但所有这些都应该通过保留用户 ID 与 Laravel 的默认用户类建立关系。此外,在用户类中保留一般属性,在每个子类中保留特定属性,例如客户可以有地址,管理员可以有电话号码,而用户名等常见的东西可以保留在用户模型中。然后你就不需要多种形式的登录,当用户登录时,你会相应地重定向到默认用户记录中的用户类型。现在对于您的消息传递问题,使用用户默认用户模型来建立消息中的关系,如上所示。然后根据用户的类型进行防御,在聊天中授予他不同的权限或功能。

关于laravel - 将 Laravel 多授权用户视为一个独特的用户类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52924927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com