登錄認(rèn)證驅(qū)動
關(guān)于laravel框架中默認(rèn)的認(rèn)證(開箱即用)
通過一下命令,生成一系列的驗證文件帝火。包括
- 登錄,注冊市怎,忘記密碼控制器
- 登錄,注冊蕴侣,忘記密碼頁面
- 一個集合的路由 Auth::routes(); 路由中包括登錄焰轻,注冊,忘記密碼
- 一個用戶模型
- 生成相關(guān)表的遷移
php artisan make:auth
自定義用戶表登錄
- 配置auth.php 文件
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
<!--'admin' => [-->
<!-- 'driver' => 'session',-->
<!-- 'provider' => 'admins',-->
<!--],-->
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
<!--'admins' => [-->
<!-- 'driver' => 'eloquent',-->
<!-- 'model' => App\Models\Admin\AdminUser::class,-->
<!--],-->
],
創(chuàng)建自定義的模型昆雀,字段包括(id,name,email,password,rememberToken,timestamps)辱志,設(shè)置模型的白黑字段($fillable,$hidden )。
添加一條用于測試登錄的記錄
登錄狞膘,注冊揩懒,忘記密碼,登錄成功后路由設(shè)置
Route::group(['prefix' => 'admin','namespace' => 'Admin'],function ($router)
{
$router->get('login', 'LoginController@showLoginForm')->name('admin.login');
$router->post('login', 'LoginController@login');
$router->post('logout', 'LoginController@logout');
$router->get('dash', 'DashboardController@index');
});
- 寫一個用于自定義登錄的控制器(使用AuthenticatesUsers Trait,成功跳轉(zhuǎn)頁面挽封,構(gòu)造方法中注冊中間件,登錄視圖頁面已球,指定配置中的認(rèn)證驅(qū)動)
php artisan make:controller Admin/LgoinController
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
//登錄Trait
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
use AuthenticatesUsers;
protected $redirectTo = '/admin/dash'; //登錄成功后跳轉(zhuǎn)地址
protected $username; //登錄使用的唯一驗證字段
public function __construct()
{
$this->middleware('guest:admin', ['except' => 'logout']);
$this->username = 'teach@teach.com';
}
//重寫登錄視圖
public function showLoginForm()
{
return view('auth._login');
}
//自定義認(rèn)證驅(qū)動
protected function guard()
{
return auth()->guard('admin');
}
}
- 可以加一個驗證中間件
php artisan make:middleware AdminAuthMiddleware
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class AdminAuthMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next,$guard = null)
{
if (Auth::guard($guard)->guest()) {
if ($request->ajax() || $request->wantsJson()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest('admin/login');
}
}
return $next($request);
}
}
- 在 app\Http\Kernel.php 中注冊中間件:
protected $routeMiddleware = [
......
'auth.admin' => \App\Http\Middleware\AdminAuthMiddleware::class,
......
];