自定義登錄認(rèn)證驅(qū)動(dòng)

登錄認(rèn)證驅(qū)動(dòng)

關(guān)于laravel框架中默認(rèn)的認(rèn)證(開箱即用)

通過一下命令,生成一系列的驗(yàn)證文件。包括

  • 登錄,注冊,忘記密碼控制器
  • 登錄,注冊,忘記密碼頁面
  • 一個(gè)集合的路由 Auth::routes(); 路由中包括登錄,注冊,忘記密碼
  • 一個(gè)用戶模型
  • 生成相關(guān)表的遷移
php artisan make:auth

自定義用戶表登錄

  1. 配置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,-->
        <!--],-->
    ],
  1. 創(chuàng)建自定義的模型,字段包括(id,name,email,password,rememberToken,timestamps),設(shè)置模型的白黑字段($fillable,$hidden )。

  2. 添加一條用于測試登錄的記錄

  3. 登錄,注冊,忘記密碼,登錄成功后路由設(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');
});
  1. 寫一個(gè)用于自定義登錄的控制器(使用AuthenticatesUsers Trait,成功跳轉(zhuǎn)頁面,構(gòu)造方法中注冊中間件,登錄視圖頁面,指定配置中的認(rèn)證驅(qū)動(dòng))
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;    //登錄使用的唯一驗(yàn)證字段

    public function __construct()
    {
        $this->middleware('guest:admin', ['except' => 'logout']);
        $this->username = 'teach@teach.com';
    }

    //重寫登錄視圖
    public function showLoginForm()
    {
       return view('auth._login');
    }

    //自定義認(rèn)證驅(qū)動(dòng)
    protected function guard()
    {
        return auth()->guard('admin');
    }
}

  1. 可以加一個(gè)驗(yàn)證中間件
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);
    }
}
  1. 在 app\Http\Kernel.php 中注冊中間件:
protected $routeMiddleware = [
    ......
    'auth.admin' => \App\Http\Middleware\AdminAuthMiddleware::class,
    ......
];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,628評論 19 139
  • 簡介 laravel 使實(shí)施認(rèn)證的變得非常簡單,事實(shí)上,它提供了非常全面的配置項(xiàng)以適應(yīng)應(yīng)用的業(yè)務(wù)。認(rèn)證的配置文件存...
    Dearmadman閱讀 6,340評論 2 13
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,160評論 25 708
  • 22年12月更新:個(gè)人網(wǎng)站關(guān)停,如果仍舊對舊教程有興趣參考 Github 的markdown內(nèi)容[https://...
    tangyefei閱讀 35,421評論 22 257
  • 1、什么是Webpack WebPack可以看做是模塊打包機(jī):它做的事情是,分析你的項(xiàng)目結(jié)構(gòu),找到JavaScri...
    gtt21閱讀 401評論 0 1

友情鏈接更多精彩內(nèi)容