Laravel支持的驱动程序是"database"或"eloquent"来授权网站。 在默认的config/auth.php中,我们可以看到它总是声明驱动程序是eloquent。
```
/*
|--------------------------------------------------------------------------
| User Providers
|--------------------------------------------------------------------------
|
| 所有身份验证驱动程序都有一个用户提供程序。这定义了如何从数据库或其他存储机制中实际检索用户的数据。
|
| 如果您有多个用户表或模型,您可以配置多个代表每个模型/表的源。然后可以将这些源分配给您定义的任何额外的身份验证保护。
|
| 支持的:"database","eloquent"
|
*/
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\Users::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],
```
然后我们有一个模式User与表User关联,用于检查认证。 因此,我们可以使用一些auth的方法: auth::check(), auth::atemp(), auth:login(),... 如果我不使用Model App\Models\Users::class,而是使用'driver' => 'database',那么我如何使用一些auth的函数进行授权呢?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
只需将驱动更改为数据库,您可以轻松地注释掉eloquent部分并取消注释驱动数据库部分,您可以像以前一样正常使用auth()。 Laravel的auth功能即插即用。
'users' => [ 'driver' => 'database', 'table' => 'users', //或者您用于用户的任何表。 ]您可以在AuthController中设计您的signIn方法,如下所示:
public function signIn(Request $request) { $request->validate([ 'email' => 'required|email', 'password' => 'required' ]); $credentials = $request->only('email', 'password'); if (Auth::attempt($credentials)) { return redirect('/'); } return redirect('login')->withErrors('登录详细信息无效'); }它将在eloquent和数据库驱动程序中都起作用。