Laravel 5.2需要一个实现默认身份验证驱动程序/“多重身份验证”的示例。目前需要大量的工作。
Laravel 5.2需要一个实现默认身份验证驱动程序/“多身份验证”的示例,目前需要做很多工作。出现这个问题的原因是,初始的身份验证机制不够好,并且与多身份验证不兼容。解决方法是在routes/web.php文件中添加以下路由:
Route::controller('/auth', 'Auth\AuthController'); Route::controller('/password', 'Auth\PasswordController');
然后在resources/views/auth/login.blade.php文件中创建表单。完成这些步骤后,可以使用laravel.dev/auth/login和laravel.dev/auth/logout路由进行登录和注销操作。
在Illuminate\Foundation\Auth\AuthenticatesUsers特征中,我们可以看到该机制目前是无用的,例如logout方法没有在任何地方定义提供者admin:
Auth::logout(); // not working logout should be smth like Auth::guard($provider)->logout();
Laravel 5.2需要一个实现默认身份验证驱动程序/“多身份验证”的示例,目前需要大量工作。
使用rajpurohit-dinesh的示例,我们只需要完成第一步:
1:
在我们的app文件夹中创建一个App\Admin模型。下面是您的Authenticatable类应该如何编写的示例。
2:更新config/auth.php文件。
return [ // This is the default guard used, not need to declare // another guard here 'defaults' => [ 'guard' => 'user', 'passwords' => 'user', ], // Here we must to declare the guards, if we created the App\Admin // class as first step, we don't need to create a custom guard 'guards' => [ 'user' => [ 'driver' => 'session', 'provider' => 'user', ], 'admin' => [ 'driver' => 'session', 'provider' => 'admin', ], ], // In this example we are using only 'eloquent' driver 'providers' => [ 'user' => [ 'driver' => 'eloquent', 'model' => 'App\User', ], 'admin' => [ 'driver' => 'eloquent', 'model' => 'App\Admin', ], ], 'passwords' => [ 'user' => [ 'provider' => 'user', 'email' => 'auth.emails.password', 'table' => 'password_resets', 'expire' => 60, ], 'admin' => [ 'provider' => 'admin', 'email' => 'auth.emails.password', 'table' => 'password_resets', 'expire' => 60, ] ] ];
3:要进行测试,我们可以使用我们的app\Http\Route.php文件:
Route::get('/login', function() { $auth = auth()->guard('admin'); $credentials = [ 'email' => 'admin.com', 'password' => 'password', ]; if ($auth->attempt($credentials)) { return 'Success'; } else { return 'Not Success'; });
问题的出现原因是需要实现Laravel 5.2中的默认身份验证驱动程序/“多身份验证”。解决方法是按照上述步骤创建一个App\Admin模型,并在config/auth.php文件中更新设置,然后使用测试路由进行测试。
Laravel 5.2需要一个实现默认身份验证驱动程序/“Multi-Auth”的示例,目前需要大量工作。问题出现的原因是需要在Laravel中实现多个身份验证驱动程序,但是配置文件中需要重复的配置项较多。解决方法是创建两个新的模型:App\Admin和App\User,并更新配置文件config/auth.php。在kernel.php中添加相应的中间件配置,并在Route.php中设置相应的路由代码进行测试。
以下是具体的解决方法:
首先,创建两个新的模型:App\Admin和App\User。
然后,更新配置文件config/auth.php,将默认的guard和passwords设置为'user'。同时,为'user'和'admin'分别配置guards和providers。
接下来,配置passwords,为'user'和'admin'分别设置provider、email、table和expire。
在kernel.php的middleware中添加相应的中间件。
在middlewareGroups中的'web'中添加EncryptCookies和AddQueuedCookiesToResponse中间件。
在Route.php中设置'/login'和'/profile'的路由,并进行相应的身份验证和用户信息打印。
尽管配置文件中的guards、providers和passwords相似,但是这是实现多个身份验证驱动程序所必需的重复配置。