摘要:添加一个或多个用户表,以为例。。完善一下以上代码,当登录后,再次访问这个时,会自动跳转到这个,这是因为这个中间件默认跳转到了,也就是目录下的这个文件。
laraveli添加一个或多个用户表,以admin为例。。
部分文件内容可能需要根据实际情况修改
创建一个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下创建目录Admin/Auth
在Admin目录下创建文件HomeController.php(这个文件用来测试登录成功后的跳转页面)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目录下便生成了这个文件,然后编辑这个文件
"required", "password" => ["required", "min:6"] //密码必须,最小长度为6 ]; } }在Admin/Auth目录下创建文件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()方法里调用上面增加的方法
public function map() { $this->mapApiRoutes(); $this->mapAdminWebRoutes();//调用新增的方法 $this->mapWebRoutes(); }在routes目录下增加一个路由文件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复制到resources/views/admin下
把layouts/app.blade.php复制为layouts/admin.blade.php,修改相应的地方
把login.blade.php复制到admin/Auth目录下
@extends("layouts.admin") @section("content")@endsectionAdmin Login
数据填充
php artisan make:seed AdminsTableSeeder
编辑AdminsTableSeeder.php
public function run() { AppAdmin::insert([ "name"=>"yzha5", "password"=> bcrypt("123456") ]); }
DatabaseSeeder.php
$this->call(AdminsTableSeeder::class);
文件上传至服务器,登入服务器,执行填充命令
php artisan migrate php artisan db:seed
此时,直接打开http://xxx/admin并不会跳转到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); }
以上代码,当admin登录后,再次访问/admin/login这个URI时,会自动跳转到/home这个URI,这是因为guest这个中间件默认跳转到了/home,也就是middleware目录下的RedirectIfAuthenticated.php这个文件。
解决方法为:
创建一个中单件,名为:RedirectIfAdminAuthenticated
php artisan make:middleware RedirectIfAdminAuthenticated
编辑这个文件:
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");
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/28235.html
摘要:于是直接暴力开干,找说明书查询。测试登录,果然不通。一般情况下,这时候应该遵照官方手册,开始建立自己相配套的数据库体系。数据库是连通了,出现了熟悉的错误找不到表。登入登出完全正常,终于可以和和和美美地住在一个小房子里了。 Yii2与Laravel相爱相杀已经很久了,导致广大PHP爱好者必须选边站队,生怕自己站错了阵营。作为一个已经上了Yii2贼船很久的人想换船是需要很大勇气的,能不能就...
摘要:最佳实践良好的编码规范单元测试持续集成文档,从一开始就形成良好的编码习惯。真实的电商业务所有的业务需求来自真实的客户,并且线上良好运营中。 重要通知: Laravel + 小程序的开源电商版本源码已经在 github 上拉,欢迎提交 issue 和 star :) 开源电商 Server 端: Laravel API源码 开源电商 client 端:小程序源码 iBrand 简介...
摘要:别堵塞了传输层大多数事件处理器被当作传输层组件。解耦事件处理器开始本命题前,我们来使用一个示例。假想下把队列处理器用来发送消息给用户。尽量避免在事件处理器中掺杂太多的业务逻辑。 声明:本文并非博主原创,而是来自对《Laravel 4 From Apprentice to Artisan》阅读的翻译和理解,当然也不是原汁原味的翻译,能保证90%的原汁性,另外因为是理解翻译,肯定会有错误的...
摘要:总结如果你在为公司寻找一款开源免费的开发文档文档管理工具,不妨考虑一下项目,一定不会让你失望的。 Wizard 是一款开源文档管理系统,项目地址为 https://github.com/mylxsw/wizard。这个项目是 我 在2017年就开始开发的,起初只是想做一款能够在公司内部把Swagger文档管理起来的工具,但在这近两年的时间里,一直断断续续的为其添加各种功能,现在终于下决...
摘要:开发人员可以通过命令行工具生成和管理项目环境。附带了一个名为的优秀的命令行工具它提供了一些开发过程中有用的命令用,可以用来生成框架代码和数据库管理。这就是的目录结构发挥作用的地方。 Laravel被称为全栈式框架,因为它能够处理从网络服务到数据库管理、HTML生成的一切事情,垂直集成的web开发环境给开发者提供了更好的体验。 开发人员可以通过命令行工具,生成和管理Laravel项目环...
阅读 964·2019-08-30 15:54
阅读 496·2019-08-30 12:51
阅读 2094·2019-08-29 16:28
阅读 2894·2019-08-29 16:10
阅读 2388·2019-08-29 14:21
阅读 471·2019-08-29 14:09
阅读 2196·2019-08-23 16:13
阅读 1282·2019-08-23 13:59