Php Laravel 5个用户角色,但1个登录路径

Php Laravel 5个用户角色,但1个登录路径,php,laravel-5,Php,Laravel 5,我有许多用户角色,如管理员、信使、出纳和发件人 我所做的是把他们放在一个名为“用户”的表中,然后只放一个角色字段来标识他们的角色。但我的问题是,每个角色没有相同的字段,就像messenger有一个已分配的区域字段,而发件人没有。只需登录1次,登录后,确定角色并根据角色将其引导到特定视图。示例:如果我以管理员身份登录,则应将我定向到管理员页面,如果是发件人,则转到发件人页面 使用Laravel 5框架和使用Laravel的auth登录实现这一点的好方法是什么 谢谢我认为实现这一点最简单的方法是通过

我有许多用户角色,如管理员、信使、出纳和发件人

我所做的是把他们放在一个名为“用户”的表中,然后只放一个角色字段来标识他们的角色。但我的问题是,每个角色没有相同的字段,就像messenger有一个已分配的区域字段,而发件人没有。只需登录1次,登录后,确定角色并根据角色将其引导到特定视图。示例:如果我以管理员身份登录,则应将我定向到管理员页面,如果是发件人,则转到发件人页面

使用Laravel 5框架和使用Laravel的auth登录实现这一点的好方法是什么


谢谢

我认为实现这一点最简单的方法是通过自定义中间件定义。检查默认的auth中间件,并设计与之类似的新中间件

如果用户已登录,只需获取该用户并检查其角色即可。如果他/她拥有管理员权限,则重定向到管理员页面等

定义此中间件后,可以修改路由并将此中间件连接到路由


详细解释了这一点

我就是这么做的,但我的问题是用户角色没有相同的字段。。就像messenger没有与admin相同的字段,因此将它们放在一个表中似乎不正确,因为根据角色的不同,某些字段将保留为空。您可以提供有关字段的详细信息吗?发件人具有id firstname lastname email password addres contact。messenger已分配id firstname lastname电子邮件密码Area PlateNumber如果您定义hasOne关系,例如可以存储地址和联系人详细信息的hasOne(“地址”),以及可以存储已分配区域的hasOne(“区域”)等。然后您可以控制用户的地址或区域是否为空。我已经阅读了有关多态性的内容。。它确实回答了我的问题,但我仍在学习