<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        laravel如何實現(xiàn)多用戶體系登錄

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-03 18:16:00
        文檔

        laravel如何實現(xiàn)多用戶體系登錄

        laravel如何實現(xiàn)多用戶體系登錄:laraveli添加一個或多個用戶表,以admin為例。部分文件內(nèi)容可能需要根據(jù)實際情況修改推薦:laravel教程創(chuàng)建一個Admin模型php artisan make:model Admin -m編寫admins表字段Schema::create('admins', function (B
        推薦度:
        導(dǎo)讀laravel如何實現(xiàn)多用戶體系登錄:laraveli添加一個或多個用戶表,以admin為例。部分文件內(nèi)容可能需要根據(jù)實際情況修改推薦:laravel教程創(chuàng)建一個Admin模型php artisan make:model Admin -m編寫admins表字段Schema::create('admins', function (B

        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模型

        <?php
        namespace App;
        use IlluminateNotificationsNotifiable;
        use IlluminateFoundationAuthUser as Authenticatable;
        /**
         * @property int $id
         * @property CarbonCarbon $created_at
         * @property CarbonCarbon $updated_at
         */
        class Admin extends Authenticatable
        {
         use Notifiable;
         protected $fillable = [
         'name', 'password','remember_token'
         ];
         protected $hidden = [
         'password','remember_token'
         ];
        }

        修改auth.php配置文件

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

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

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

        <?php
        namespace AppHttpControllersAdmin;
        use AppHttpControllersController;
        use IlluminateHttpRequest;
        class HomeController extends Controller
        {
         /**
         * HomeController constructor.
         */
         public function __construct()
         {
         $this->middleware('auth:admin');
         }
         /**
         * Show the application dashboard.
         *
         * @return IlluminateHttpResponse
         */
         public function index()
         {
         return view('admin.home');
         }
        }

        使用命令生成一個Request

        php artisan make:request AdminLoginRequest

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

        <?php
        namespace AppHttpRequests;
        use IlluminateFoundationHttpFormRequest;
        class AdminLoginRequest extends FormRequest
        {
         /**
         * 確定用戶是否有權(quán)發(fā)出此請求.
         *
         * @return bool
         */
         public function authorize()
         {
         return true;
         }
         /**
         * 獲取適用于請求的驗證規(guī)則.
         *
         * @return array
         */
         public function rules()
         {
         return [
         'name' => 'required',
         'password' => ['required', 'min:6'] //密碼必須,最小長度為6
         ];
         }
        }

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

        <?php
        namespace AppHttpControllersAdminAuth;
        use AppHttpControllersController;
        use AppHttpRequestsAdminLoginRequest;
        use IlluminateSupportFacadesAuth;
        class LoginController extends Controller
        {
         public function showLoginForm()
         {
         return view('admin.auth.login');
         }
         public function postLogin(AdminLoginRequest $loginRequest)
         {
         $data = $loginRequest->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

        <?php
        Route::get('login','AdminAuthLoginController@showLoginForm')
         ->middleware('guest:admin')
         ->name('admin.login.show');
        Route::get('/','AdminHomeController@index')
         ->name('admin.home');
        Route::post('login','AdminAuthLoginController@postLogin')
         ->middleware('guest:admin')
         ->name('admin.login.post');
        Route::post('logout','AdminAuthLoginController@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)的地方

        <ul class="nav navbar-nav navbar-right">
         <!-- Authentication Links -->
         @guest('admin')
         <li><a href="{{ route('admin.login.show') }}">admin Login</a></li>
         @else
         <li class="dropdown">
         <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false" aria-haspopup="true">
         {{ Auth::guard('admin')->user()->name }} <span class="caret"></span>
         </a>
         <ul class="dropdown-menu">
         <li>
         <a href="{{ route('admin.logout') }}"
         onclick="event.preventDefault();
         document.getElementById('logout-form').submit();">
         Logout
         </a>
         <form id="logout-form" action="{{ route('admin.logout') }}" method="POST" style="display: none;">
         {{ csrf_field() }}
         </form>
         </li>
         </ul>
         </li>
         @endguest
        </ul>

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

        @extends('layouts.admin')
        @section('content')
         <div class="container">
         <div class="row">
         <div class="col-md-8 col-md-offset-2">
         <div class="panel panel-default">
         <div class="panel-heading">Admin Login</div>
         <div class="panel-body">
         <form class="form-horizontal" method="POST" action="{{ route('admin.login.post') }}">
         {{ csrf_field() }}
         <div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}">
         <label for="name" class="col-md-4 control-label">E-Mail Address</label>
         <div class="col-md-6">
         <input id="name" type="text" class="form-control" name="name"
         value="{{ old('name') }}" required autofocus>
         @if ($errors->has('name'))
         <span class="help-block">
         <strong>{{ $errors->first('name') }}</strong>
         </span>
         @endif
         </div>
         </div>
         <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
         <label for="password" class="col-md-4 control-label">Password</label>
         <div class="col-md-6">
         <input id="password" type="password" class="form-control" name="password" required>
         @if ($errors->has('password'))
         <span class="help-block">
         <strong>{{ $errors->first('password') }}</strong>
         </span>
         @endif
         </div>
         </div>
         <div class="form-group">
         <div class="col-md-8 col-md-offset-4">
         <button type="submit" class="btn btn-primary">
         Login
         </button>
         </div>
         </div>
         </form>
         </div>
         </div>
         </div>
         </div>
         </div>
        @endsection

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

        php artisan make:seed AdminsTableSeeder

        編輯AdminsTableSeeder.php

        public function run()
         {
         AppAdmin::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 IlluminateSupportFacadesRoute;
        protected function unauthenticated($request, AuthenticationException $exception)
         {
         return starts_with(Route::currentRouteName(), 'admin')
         ? redirect(route('admin.login.show'))
         : parent::unauthenticated($request, $exception);
         }

        完善一下

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

        解決方法為:

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

        php artisan make:middleware RedirectIfAdminAuthenticated

        編輯這個文件:

        <?php
        namespace AppHttpMiddleware;
        use Closure;
        use IlluminateSupportFacadesAuth;
        class RedirectIfAdminAuthenticated
        {
         /**
         * Handle an incoming request.
         *
         * @param $request
         * @param Closure $next
         * @param null $guard
         * @return IlluminateHttpRedirectResponse|IlluminateRoutingRedirector|mixed
         */
         public function handle($request, Closure $next, $guard = null)
         {
         if (Auth::guard($guard)->check()) {
         return redirect('/admin');
         }
         return $next($request);
         }
        }
        在Kernel.php中添加一行
        protected $routeMiddleware = [
         ...
         'admin.guest' => AppHttpMiddlewareRedirectIfAdminAuthenticated::class,
         ...
         ];
        更改admin路由,將guest:admin改為admin.guest:admin
        Route::get('login','AdminAuthLoginController@showLoginForm')
         ->middleware('admin.guest:admin')
         ->name('admin.login.show');
        Route::post('login','AdminAuthLoginController@postLogin')
         ->middleware('admin.guest:admin')
         ->name('admin.login.post');

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        laravel如何實現(xiàn)多用戶體系登錄

        laravel如何實現(xiàn)多用戶體系登錄:laraveli添加一個或多個用戶表,以admin為例。部分文件內(nèi)容可能需要根據(jù)實際情況修改推薦:laravel教程創(chuàng)建一個Admin模型php artisan make:model Admin -m編寫admins表字段Schema::create('admins', function (B
        推薦度:
        標(biāo)簽: 登錄 用戶 實現(xiàn)
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲黄色免费网址| 亚洲欭美日韩颜射在线二| 亚洲精品视频免费在线观看| 91在线视频免费观看| 久久精品国产精品亚洲下载| 曰韩无码AV片免费播放不卡| 国产精品公开免费视频| 阿v免费在线观看| jizzjizz亚洲| a在线免费观看视频| 亚洲av无码潮喷在线观看| 外国成人网在线观看免费视频| 国产成人A人亚洲精品无码| 国产成人精品一区二区三区免费| 久久精品国产亚洲麻豆| 日本亚洲欧洲免费天堂午夜看片女人员 | 亚洲久本草在线中文字幕| 在线日本高清免费不卡| 亚洲另类图片另类电影| 精品熟女少妇AV免费观看| 亚洲乱理伦片在线观看中字 | 免费一级毛片不卡在线播放| 特级毛片aaaa免费观看| 亚洲不卡中文字幕无码| 青青在线久青草免费观看| 亚洲av成人中文无码专区| 国产亚洲精品无码拍拍拍色欲| 日本不卡免费新一区二区三区| 亚洲伊人久久大香线蕉影院| 国产精品深夜福利免费观看 | 亚洲AV无码专区在线亚| 亚洲AV网站在线观看| 国产高清对白在线观看免费91| 亚洲a在线视频视频| 无码视频免费一区二三区| 一级一黄在线观看视频免费| 337p日本欧洲亚洲大胆精品555588| 无码人妻一区二区三区免费手机| 日韩久久无码免费毛片软件| 亚洲色图在线播放| www国产亚洲精品久久久|