之前实现了一次,后来代码忘记放哪了,所以有跳了一次坑。
先贴上Laravel自带的验证代码:
路由:routes/web.php
// Authentication Routes...
$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');
$this->post('login', 'Auth\LoginController@login');
$this->post('logout', 'Auth\LoginController@logout')->name('logout');
// Registration Routes...
$this->get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
$this->post('register', 'Auth\RegisterController@register');
// Password Reset Routes...
$this->get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
$this->post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
$this->get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
$this->post('password/reset', 'Auth\ResetPasswordController@reset');
// After Login...
Route::get('/home', 'HomeController@index')->name('home');
中间件:config/auth.php(默认的用户认证配置文件auth.php,配置如下)
<?php
return [
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
],
'passwords' => [
'users' => [
'provider' => 'users',
'email' => 'auth.emails.password',
'table' => 'password_resets',
'expire' => 60,
],
],
];
控制器:
app/Http/Controllers/Auth/RegisterController.php
app/Http/Controllers/Auth/LoginController.php
app/Http/Controllers/Home/HomeController.php
等等...
Table表: users
![](https://i-blog.csdnimg.cn/blog_migrate/9e7f8d0ebc4acb5c09a261bcee91c4c6.png)
CREATE TABLE `mgshop_users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
Model:app/User.php
namespace App;
use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContracts;
class User extends Model implements AuthenticatableContracts
{
use Authenticatable;
protected $table = 'users';//'user';//设置表名
protected $primaryKey = 'id';//'UserID';//设置主键
public $timestamps = false;
protected $fillable = ['name','email','password'];//开启白名单字段
}
该验证仅需执行下面命令即可生成对应数据库表及代码
php artisan make:auth