如何使用两个Laravel默认的Guard?

10 浏览
0 Comments

如何使用两个Laravel默认的Guard?

我正在尝试使用同一个表单登录管理员和用户,但是在config/auth中我只能设置一个默认值。\n这是我的config/auth:\n\'defaults\' => [\n \'guard\' => \'web_users\',\n \'passwords\' => \'users\',\n],\n\'guards\' => [\n \'web_users\' => [\n \'driver\' => \'session\',\n \'provider\' => \'users\',\n ],\n \'web_admins\' => [\n \'driver\' => \'session\',\n \'provider\' => \'admins\',\n ],\n \'api\' => [\n \'driver\' => \'token\',\n \'provider\' => \'users\',\n ],\n],\n\'providers\' => [\n \'users\' => [\n \'driver\' => \'eloquent\',\n \'model\' => App\\User::class,\n ],\n \'admins\' => [\n \'driver\' => \'eloquent\',\n \'model\' => App\\Admin::class,\n ],\n],\n当我使用默认的\"web_users\"登录用户时,可以通过Auth::user()方法获取他的数据,但是如果我使用默认的\"web_admins\"登录管理员,无法获取任何数据。\n路由:\nRoute::resource(\'log\',\'LogController\');\nRoute::get(\'logout\',\'LogController@logout\');\n日志控制器:\npublic function store(Request $request)\n{\n if(Auth::guard(\'web_users\')->attempt([\'email\'=>$request[\'email\'],\'password\'=>$request[\'password\']])) {\n return Redirect::to(\'/\');\n }\n if(Auth::guard(\'web_admins\')->attempt([\'email\'=>$request[\'email\'],\'password\'=>$request[\'password\']])) {\n return Redirect::to(\'/\');\n }\n}\npublic function logout()\n{\n Auth::logout();\n return Redirect::to(\'log\');\n}\n注意:对不起,我的英语不太好。

0
0 Comments

问题的原因是希望在Laravel中同时使用两个默认的guard。默认情况下,Laravel只允许使用一个默认的guard,但有时候我们可能需要在应用程序中使用多个guard来管理不同类型的用户。

解决这个问题的方法是在路由文件中进行配置。可以使用Route::group函数来创建一个路由组,然后在该组中指定使用的guard。在上述代码中,我们使用了auth:web_users,web_admin作为中间件来指定使用两个guard。其中,web_usersweb_admin是两个guard的名称。

在这个路由组中,我们可以定义各种路由,如资源路由Route::resource('log','LogController')Route::get('logout','LogController')。这些路由将会使用指定的两个guard进行身份验证。

通过以上配置,我们就可以在Laravel中同时使用两个默认的guard了。这样,我们可以更加灵活地管理不同类型的用户,并为他们提供不同的权限和功能。

总结起来,要在Laravel中使用两个默认的guard,我们可以通过在路由文件中配置指定的中间件来实现。这样,我们就可以同时管理多个类型的用户,并为他们提供不同的权限和功能。

0