2

使用我的 laravel 5 应用程序,我希望同时拥有管理员用户和客户端。过去,我对两者都使用了用户表,并且有一个标志是哪种类型的用户 - 带有一个连接表以获取更多客户信息。

我发现这种方法非常混乱......并且认为最好同时拥有用户表和模型以及客户表和模型。

但是,这导致了我的问题,例如身份验证密码重置,身份验证尝试是针对用户表的。是否有可能使这也适用于客户端表。

这甚至可能吗?(我已将 laravel 4 标记为解决方案也可能对此产生影响)。

4

1 回答 1

2

我在处理 Laravel 中的多个用户时遇到了类似的问题。

我发现multiauthLaravel 包非常有用,请查看https://github.com/ollieread/multiauth

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

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

用法

一切都以与原始库完全相同的方式完成,一个例外是所有 >method 调用都以密钥(上面示例中的帐户或用户)作为方法本身作为前缀。

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,所以可以省略。

等等等等。

希望这可以帮助!

于 2014-10-14T10:01:28.443 回答