摘要:添加一個(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")@endsectionAdmin Login
數(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
摘要:于是直接暴力開干,找說明書查詢。測(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賊船很久的人想換船是需要很大勇氣的,能不能就...
摘要:最佳實(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)介...
摘要:別堵塞了傳輸層大多數(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ò)誤的...
摘要:總結(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)在終于下決...
摘要:開發(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)...
閱讀 817·2019-08-30 15:54
閱讀 445·2019-08-30 12:51
閱讀 2027·2019-08-29 16:28
閱讀 2847·2019-08-29 16:10
閱讀 2334·2019-08-29 14:21
閱讀 412·2019-08-29 14:09
閱讀 2135·2019-08-23 16:13
閱讀 1240·2019-08-23 13:59