国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

laravel 實(shí)現(xiàn)多用戶體系登錄

xuweijian / 906人閱讀

摘要:添加一個(gè)或多個(gè)用戶表,以為例。。完善一下以上代碼,當(dāng)?shù)卿浐螅俅卧L問這個(gè)時(shí),會(huì)自動(dòng)跳轉(zhuǎn)到這個(gè),這是因?yàn)檫@個(gè)中間件默認(rèn)跳轉(zhuǎn)到了,也就是目錄下的這個(gè)文件。

laraveli添加一個(gè)或多個(gè)用戶表,以admin為例。。
部分文件內(nèi)容可能需要根據(jù)實(shí)際情況修改

創(chuàng)建一個(gè)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" => AppAdmin::class,
    ]
],

app/Http/Controllers下創(chuàng)建目錄Admin/Auth
Admin目錄下創(chuàng)建文件HomeController.php(這個(gè)文件用來測(cè)試登錄成功后的跳轉(zhuǎn)頁面)

middleware("auth:admin");
    }

    /**
     * Show the application dashboard.
     *
     * @return IlluminateHttpResponse
     */
    public function index()
    {
        return view("admin.home");
    }
}

使用命令生成一個(gè)Request

php artisan make:request AdminLoginRequest

此時(shí)在app/Http/Request目錄下便生成了這個(gè)文件,然后編輯這個(gè)文件

 "required",
            "password" => ["required", "min:6"] //密碼必須,最小長(zhǎng)度為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" => "用戶名或密碼錯(cuò)誤"]);
        }
    }

    public function postLogout()
    {
        Auth::guard("admin")->logout();
        return redirect(route("admin.login.show"));
    }
}

添加路由。打開app/providers/RouteServiceProvider.php
在方法mapWebRoutes()方法后面增加一個(gè)方法

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目錄下增加一個(gè)路由文件admin.php

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)的地方

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

@extends("layouts.admin")

@section("content")
    
Admin Login
{{ csrf_field() }}
@if ($errors->has("name")) {{ $errors->first("name") }} @endif
@if ($errors->has("password")) {{ $errors->first("password") }} @endif
@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

此時(shí),直接打開http://xxx/admin并不會(huì)跳轉(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這個(gè)URI時(shí),會(huì)自動(dòng)跳轉(zhuǎn)到/home這個(gè)URI,這是因?yàn)?b>guest這個(gè)中間件默認(rèn)跳轉(zhuǎn)到了/home,也就是middleware目錄下的RedirectIfAuthenticated.php這個(gè)文件。

解決方法為:
創(chuàng)建一個(gè)中單件,名為:RedirectIfAdminAuthenticated

php artisan make:middleware RedirectIfAdminAuthenticated

編輯這個(gè)文件:

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");

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/28235.html

相關(guān)文章

  • 打通Laravel和Yii2任督二脈

    摘要:于是直接暴力開干,找說明書查詢。測(cè)試登錄,果然不通。一般情況下,這時(shí)候應(yīng)該遵照官方手冊(cè),開始建立自己相配套的數(shù)據(jù)庫體系。數(shù)據(jù)庫是連通了,出現(xiàn)了熟悉的錯(cuò)誤找不到表。登入登出完全正常,終于可以和和和美美地住在一個(gè)小房子里了。 Yii2與Laravel相愛相殺已經(jīng)很久了,導(dǎo)致廣大PHP愛好者必須選邊站隊(duì),生怕自己站錯(cuò)了陣營(yíng)。作為一個(gè)已經(jīng)上了Yii2賊船很久的人想換船是需要很大勇氣的,能不能就...

    kohoh_ 評(píng)論0 收藏0
  • Laravel 教程 - 實(shí)戰(zhàn) iBrand 開源電商 API 系統(tǒng)

    摘要:最佳實(shí)踐良好的編碼規(guī)范單元測(cè)試持續(xù)集成文檔,從一開始就形成良好的編碼習(xí)慣。真實(shí)的電商業(yè)務(wù)所有的業(yè)務(wù)需求來自真實(shí)的客戶,并且線上良好運(yùn)營(yíng)中。 重要通知: Laravel + 小程序的開源電商版本源碼已經(jīng)在 github 上拉,歡迎提交 issue 和 star :) 開源電商 Server 端: Laravel API源碼 開源電商 client 端:小程序源碼 iBrand 簡(jiǎn)介...

    iOS122 評(píng)論0 收藏0
  • Laravel深入學(xué)習(xí)6 - 應(yīng)用體系結(jié)構(gòu):解耦事件處理器

    摘要:別堵塞了傳輸層大多數(shù)事件處理器被當(dāng)作傳輸層組件。解耦事件處理器開始本命題前,我們來使用一個(gè)示例。假想下把隊(duì)列處理器用來發(fā)送消息給用戶。盡量避免在事件處理器中摻雜太多的業(yè)務(wù)邏輯。 聲明:本文并非博主原創(chuàng),而是來自對(duì)《Laravel 4 From Apprentice to Artisan》閱讀的翻譯和理解,當(dāng)然也不是原汁原味的翻譯,能保證90%的原汁性,另外因?yàn)槭抢斫夥g,肯定會(huì)有錯(cuò)誤的...

    HackerShell 評(píng)論0 收藏0
  • Wizard 開源文檔管理系統(tǒng)1.0發(fā)布啦

    摘要:總結(jié)如果你在為公司尋找一款開源免費(fèi)的開發(fā)文檔文檔管理工具,不妨考慮一下項(xiàng)目,一定不會(huì)讓你失望的。 Wizard 是一款開源文檔管理系統(tǒng),項(xiàng)目地址為 https://github.com/mylxsw/wizard。這個(gè)項(xiàng)目是 我 在2017年就開始開發(fā)的,起初只是想做一款能夠在公司內(nèi)部把Swagger文檔管理起來的工具,但在這近兩年的時(shí)間里,一直斷斷續(xù)續(xù)的為其添加各種功能,現(xiàn)在終于下決...

    cod7ce 評(píng)論0 收藏0
  • Laravel框架的體系結(jié)構(gòu)

    摘要:開發(fā)人員可以通過命令行工具生成和管理項(xiàng)目環(huán)境。附帶了一個(gè)名為的優(yōu)秀的命令行工具它提供了一些開發(fā)過程中有用的命令用,可以用來生成框架代碼和數(shù)據(jù)庫管理。這就是的目錄結(jié)構(gòu)發(fā)揮作用的地方。 Laravel被稱為全棧式框架,因?yàn)樗軌蛱幚韽木W(wǎng)絡(luò)服務(wù)到數(shù)據(jù)庫管理、HTML生成的一切事情,垂直集成的web開發(fā)環(huán)境給開發(fā)者提供了更好的體驗(yàn)。 開發(fā)人員可以通過命令行工具,生成和管理Laravel項(xiàng)目環(huán)...

    ACb0y 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

xuweijian

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<