真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

laravel實現(xiàn)多用戶體系登錄的方法

小編給大家分享一下laravel實現(xiàn)多用戶體系登錄的方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

烏爾禾網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,烏爾禾網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為烏爾禾上1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的烏爾禾做網(wǎng)站的公司定做!

laraveli添加一個或多個用戶表,以admin為例。

部分文件內(nèi)容可能需要根據(jù)實際情況修改

推薦:laravel教程

創(chuàng)建一個Admin模型

php artisan make:model Admin -m

編寫admins表字段

Schema::create('admins', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name')->unique();
    $table->string('password');
    $table->rememberToken();
    $table->timestamps();
});

編輯admin模型

修改auth.php配置文件

'guards' => [
    ...
    'admin' => [
        'driver' => 'session',
        'provider' => 'admins'
    ]
],
'providers' => [
    ...
    'admins' => [
        'driver' => 'eloquent',
        'model' => App\Admin::class,
    ]
],

在app/Http/Controllers下創(chuàng)建目錄Admin/Auth

在Admin目錄下創(chuàng)建文件HomeController.php(這個文件用來測試登錄成功后的跳轉(zhuǎn)頁面)

middleware('auth:admin');
    }
    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return view('admin.home');
    }
}

使用命令生成一個Request

php artisan make:request AdminLoginRequest

此時在app/Http/Request目錄下便生成了這個文件,然后編輯這個文件

 'required',
            'password' => ['required', 'min:6'] //密碼必須,最小長度為6
        ];
    }
}

在Admin/Auth目錄下創(chuàng)建文件LoginController.php

only('name', 'password');
        $result = Auth::guard('admin')->attempt($data, true);
        if ($result) {
            return redirect(route('admin.home'));
        } else {
            return redirect()->back()
                ->with('name', $loginRequest->get('name'))
                ->withErrors(['name' => '用戶名或密碼錯誤']);
        }
    }
    public function postLogout()
    {
        Auth::guard('admin')->logout();
        return redirect(route('admin.login.show'));
    }
}

添加路由。打開app/providers/RouteServiceProvider.php

在方法mapWebRoutes()方法后面增加一個方法

protected function mapAdminWebRoutes()
    {
        Route::middleware('web')
            ->prefix('admin')
            ->namespace($this->namespace)
            ->group(base_path('routes/admin.php'));
    }

在map()方法里調(diào)用上面增加的方法

public function map()
    {
        $this->mapApiRoutes();
        $this->mapAdminWebRoutes();//調(diào)用新增的方法
        $this->mapWebRoutes();
    }

在routes目錄下增加一個路由文件admin.php

middleware('guest:admin')
    ->name('admin.login.show');
Route::get('/','Admin\HomeController@index')
    ->name('admin.home');
Route::post('login','Admin\Auth\LoginController@postLogin')
    ->middleware('guest:admin')
    ->name('admin.login.post');
Route::post('logout','Admin\Auth\LoginController@postLogout')
    ->middleware('auth:admin')
    ->name('admin.logout');

把home.blade.php復(fù)制到resources/views/admin下

把layouts/app.blade.php復(fù)制為layouts/admin.blade.php,修改相應(yīng)的地方


    
    @guest('admin')
        
  • admin Login
  •     @else                           {{ Auth::guard('admin')->user()->name }}                                
  •                                      Logout                                                       {{ csrf_field() }}                              
  •                   @endguest

    把login.blade.php復(fù)制到admin/Auth目錄下

    @extends('layouts.admin')
    @section('content')
        
            
                
                    
                        Admin Login
                                                                              {{ csrf_field() }}                             has('name') ? ' has-error' : '' }}">                                 E-Mail Address                                                                                                           @if ($errors->has('name'))                                                                                  {{ $errors->first('name') }}                                                                          @endif                                 
                                
                                has('password') ? ' has-error' : '' }}">                                 Password                                                                                                           @if ($errors->has('password'))                                                                                  {{ $errors->first('password') }}                                                                          @endif                                                                                                                                                                                                          Login                                                                                                                                                                                              @endsection

    數(shù)據(jù)填充

    php artisan make:seed AdminsTableSeeder

    編輯AdminsTableSeeder.php

    public function run()
        {
            \App\Admin::insert([
                'name'=>'yzha5',
                'password'=> bcrypt('123456')
            ]);
        }
    DatabaseSeeder.php
    $this->call(AdminsTableSeeder::class);

    文件上傳至服務(wù)器,登入服務(wù)器,執(zhí)行填充命令

    php artisan migrate
    php artisan db:seed

    此時,直接打開http://xxx/admin并不會跳轉(zhuǎn)到http://xxx/admin/login,因此需要處理一些異常。打開app/Exceptions/Handle.php

    重寫unauthenticated()方法。

    use Illuminate\Support\Facades\Route;
    protected function unauthenticated($request, AuthenticationException $exception)
        {
            return starts_with(Route::currentRouteName(), 'admin')
                ? redirect(route('admin.login.show'))
                : parent::unauthenticated($request, $exception);
        }

    完善一下

    以上代碼,當admin登錄后,再次訪問/admin/login這個URI時,會自動跳轉(zhuǎn)到/home這個URI,這是因為guest這個中間件默認跳轉(zhuǎn)到了/home,也就是middleware目錄下的RedirectIfAuthenticated.php這個文件。

    解決方法為:

    創(chuàng)建一個中單件,名為:RedirectIfAdminAuthenticated

    php artisan make:middleware RedirectIfAdminAuthenticated

    編輯這個文件:

    check()) {
                return redirect('/admin');
            }
            return $next($request);
        }
    }
    在Kernel.php中添加一行
    protected $routeMiddleware = [
            ...
            'admin.guest' => \App\Http\Middleware\RedirectIfAdminAuthenticated::class,
            ...
        ];
    更改admin路由,將guest:admin改為admin.guest:admin
    Route::get('login','Admin\Auth\LoginController@showLoginForm')
        ->middleware('admin.guest:admin')
        ->name('admin.login.show');
    Route::post('login','Admin\Auth\LoginController@postLogin')
        ->middleware('admin.guest:admin')
        ->name('admin.login.post');

    以上是“l(fā)aravel實現(xiàn)多用戶體系登錄的方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


    網(wǎng)頁名稱:laravel實現(xiàn)多用戶體系登錄的方法
    標題來源:http://weahome.cn/article/iposij.html

    在線咨詢

    微信咨詢

    電話咨詢

    028-86922220(工作日)

    18980820575(7×24)

    提交需求

    返回頂部