Laravel有两种不同的用户类型

时间:2014-10-14 09:55:04

标签: php laravel-4 laravel-5

使用我的laravel 5应用程序,我想拥有管理员用户和客户端。在过去,我已经使用了两个用户表,并且有一个标志,它是哪种类型的用户 - 使用连接表来获取更多客户信息。

我发现这种方法非常简洁......并且认为拥有用户表和模型以及客户表和模型会更好。

这导致我遇到了我的问题,例如auth密码重置,auth尝试是针对users表的。是否有可能使这也适用于客户端表。

这甚至可能吗? (我已经标记了laravel 4,因为解决方案也可能影响到这一点)。

1 个答案:

答案 0 :(得分:2)

我在与Laravel中的多个用户打交道时遇到了类似的问题。

我发现multiauth Laravel套餐非常有用,请查看https://github.com/ollieread/multiauth

文档很简单。该插件最终扩展了原生Laravel Auth以允许多个用户。

让我从网站上粘贴一个片段:

  

用法

     

所有操作都与原始库完全相同,唯一的例外是所有>方法调用都以键(上述示例中的帐户或用户)为前缀作为方法本身。

Auth::account()->attempt(array(
    'email'     => $attributes['email'],
    'password'  => $attributes['password'],
));
Auth::user()->attempt(array(
    'email'     => $attributes['email'],
    'password'  => $attributes['password'],
));
Auth::account()->check();
Auth::user()->check();
  

我发现必须在名为user()的用户类型上调用user()方法看起来很乱,所以我添加了一个很好的get方法来包装它。

Auth::user()->get();
  

在你有一个可以冒充其他用户类型的用户类型的例子中,例如管理员模仿用户重新创建或检查某些内容,我在impersonate()方法中添加了一个简单地在请求用户上包装loginUsingId()的方法类型。

Auth::admin()->impersonate('user', 1, true);
  

第一个参数是用户类型,第二个参数是所述用户的id,第三个参数是否记住用户,默认为false,因此可以更频繁地省略。

     

依此类推。

希望这有帮助!