使用我的 laravel 5 应用程序,我希望同时拥有管理员用户和客户端。过去,我对两者都使用了用户表,并且有一个标志是哪种类型的用户 - 带有一个连接表以获取更多客户信息。
我发现这种方法非常混乱......并且认为最好同时拥有用户表和模型以及客户表和模型。
但是,这导致了我的问题,例如身份验证密码重置,身份验证尝试是针对用户表的。是否有可能使这也适用于客户端表。
这甚至可能吗?(我已将 laravel 4 标记为解决方案也可能对此产生影响)。
我在处理 Laravel 中的多个用户时遇到了类似的问题。
我发现multiauth
Laravel 包非常有用,请查看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,所以可以省略。
等等等等。
希望这可以帮助!