Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
最近群里很多人文档,laravel如何做会员和管理两个身份登录,今天把教程分享一下
自定义用户表登录
认证是由guards和providers两部分构成的,defaults配置是默认选择一个guard认证驱动,所以我们在这两个配置项中分别添加一个admin和admins选项。
[ 'web'=>[ 'driver'=>'session', 'provider'=>'users', ], 'admin'=>[ 'driver'=>'session', 'provider'=>'admins', ], 'providers'=>[ 'users'=>[ 'driver'=>'eloquent', 'model'=>App\User::class, ], 'admins'=>[ 'driver'=>'eloquent', 'model'=>App\Models\Admin::class, ], ],
标红的是我们后添加的后台管理员登录身份
创建后台用户表和model
phpartisanmake:modelAdmin phpartisanmake:migrationcreaet_admins_table
在数据库迁移文件_create_admins_table,我们可以复制users迁移文件里的字段
Schema::create('admins',function(Blueprint$table){ $table->increments('id'); $table->string('name'); $table->string('email'); $table->string('password'); $table->rememberToken(); $table->timestamps(); });
执行phpartisanmigrate
生成临时数据
在database/factories/ModelFactory.php,添加如下数据:
$factory->define(App\Admin::class,function(Faker\Generator$faker){ static$password; return[ 'name'=>$faker->name, 'password'=>$password?:$password=bcrypt('123456'), 'email'=>$faker->email, 'remember_token'=>str_random(10), ]; });
打开命令行输入:
phpartisantinker useApp; factory(App\Admin::class,5)->create() //生成5条测试数据,你要几条就输入多少(Class,num)
更改Admin模型类
创建控制器
phpartisanmake:controllerAdmin/LoginController phpartisanmake:controllerAdmin/AdminController编辑Admin/LoginController.php:
middleware('guest:admin',['except'=>'logout']); $this->username=config('admin.global.username'); } /** *重写登录视图页面 */ publicfunctionshowLogin() { returnview('admin.login.index'); } /** *自定义认证驱动 *@returnmixed */ protectedfunctionguard() { returnauth()->guard('admin'); } }修改app\Http\Middleware\RedirectIfAuthenticated.php:
publicfunctionhandle($request,Closure$next,$guard=null) { if(Auth::guard($guard)->check()){ //根据不同guard跳转到不同的页面 $url=$guard?'admin/dash':'/home'; returnredirect($url); } return$next($request); }编辑Admin\AdminController.php:
middleware('auth.admin:admin'); } // publicfunctionindex() { dd('用户名:'.auth('admin')->user()->name); }编辑app\Http\Middleware\AdminAuthMiddleware.php
publicfunctionhandle($request,Closure$next,$guard=null) { if(Auth::guard($guard)->guest()){ if($request->ajax()||$request->wantsJson()){ returnresponse('Unauthorized.',401); }else{ returnredirect()->guest('admin/login'); } } return$next($request); }在app\Http\Kernel.php中注册:
protected$routeMiddleware=[ ······ 'auth.admin'=>\App\Http\Middleware\AdminAuthMiddleware::class, ];注册路由
编辑routes/web.php:
Route::group(['prefix'=>'admin','namespace'=>'Admin'],function($router) { $router->get('login','LoginController@showLogin')->name('admin.login'); $router->post('login','LoginController@login'); $router->post('logout','LoginController@logout'); $router->get('index','AdminController@index'); });视图文件创建和修改
复制resources\views\auth\login.blade.php,到resources\views\admin\login\index.blade.php,修改表单提交地址
{{url('/login')}}改成{{route('admin.login')}}访问你的站点/admin/login
以上这篇Laravel5.5实现后台管理登录的方法(自定义用户表登录)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。