PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > Laravel教程 > 正文

    Laravel5.5 实现后台管理登录(自定义用户表登录)

    作者:admin来源:网络浏览:时间:2020-09-30 00:07:50我要评论
    导读:最近群里很多人文档,laravel如何做会员和管理两个身份登录,今天把教程分享一下自定义用户表登录认证是由 guards 和 providers 两部分...
    最近群里很多人文档,laravel如何做会员和管理两个身份登录,今天把教程分享一下

    自定义用户表登录

    认证是由 guards 和 providers 两部分构成的, defaults 配置是默认选择一个 guard 认证驱动,所以我们在这两个配置项中分别添加一个 admin 和 admins 选项。

    1. <?php 
    2.   'guards' => [ 
    3.         'web' => [ 
    4.             'driver' => 'session'
    5.             'provider' => 'users'
    6.         ], 
    7.         'admin' => [ 
    8.             'driver' => 'session', 
    9.             'provider' => 'admins', 
    10.         ], 
    11.   'providers' => [ 
    12.         'users' => [ 
    13.             'driver' => 'eloquent'
    14.             'model' => App\User::class
    15.         ], 
    16.         'admins' => [ 
    17.             'driver' => 'eloquent', 
    18.             'model' => App\Models\Admin::class, 
    19.         ], 
    20.     ], 
    21.  
    22.  
    标红的是我们后添加的后台管理员登录身份

    创建后台用户表和model

    1. php artisan make:model Admin 
    2. php artisan make:migration creaet_admins_table 

    在数据库迁移文件 _create_admins_table , 我们可以复制 users 迁移文件里的字段

      
    1. Schema::create('admins'function (Blueprint $table) { 
    2.             $table->increments('id'); 
    3.             $table->string('name'); 
    4.             $table->string('email'); 
    5.             $table->string('password'); 
    6.             $table->rememberToken(); 
    7.             $table->timestamps(); 
    8.         }); 

    执行php artisan migrate

    生成临时数据

    在 database/factories/ModelFactory.php, 添加如下数据:

    1. $factory->define(App\Admin::classfunction (Faker\Generator $faker) { 
    2.     static $password
    3.  
    4.     return [ 
    5.         'name' => $faker->name, 
    6.         'password' => $password ?: $password = bcrypt('123456'), 
    7.         'email' =>  $faker->email, 
    8.         'remember_token' => str_random(10), 
    9.     ]; 
    10. }); 

    打开命令行输入:
     
    1. php artisan tinker 
    2.  use App; 
    3.  factory(App\Admin::class,5)->create() 
    4.  //生成5条测试数据,你要几条就输入多少(Class,num) 
    更改 Admin 模型类

    1. <?php 
    2.  
    3. namespace App; 
    4.  
    5. use Illuminate\Notifications\Notifiable; 
    6. use Illuminate\Foundation\Auth\User as Authenticatable; 
    7.  
    8. class Admin extends Authenticatable 
    9.     use Notifiable; 
    10.  
    11.     /** 
    12.      * The attributes that are mass assignable. 
    13.      * 
    14.      * @var array 
    15.      */ 
    16.     protected $fillable = [ 
    17.         'name''email''password'
    18.     ]; 
    19.  
    20.     /** 
    21.      * The attributes that should be hidden for arrays. 
    22.      * 
    23.      * @var array 
    24.      */ 
    25.     protected $hidden = [ 
    26.         'password''remember_token'
    27.     ]; 
    创建控制器

    1. php artisan make:controller Admin/LoginController 
    2. php artisan make:controller Admin/AdminController 

    编辑 Admin/LoginController.php:

    1. <?php 
    2.  
    3. namespace App\Http\Controllers\Admin; 
    4.  
    5. use Illuminate\Http\Request; 
    6. use App\Http\Controllers\Controller; 
    7. use Illuminate\Foundation\Auth\ThrottlesLogins; 
    8. use Illuminate\Foundation\Auth\AuthenticatesUsers; 
    9.  
    10. class LoginController extends Controller 
    11.     use AuthenticatesUsers; 
    12.  
    13.     /** 
    14.      * Where to redirect users after login / registration. 
    15.      * 
    16.      * @var string 
    17.      */ 
    18.     protected $redirectTo = '/admin/index'
    19.     protected $username
    20.  
    21.     /** 
    22.      * Create a new controller instance. 
    23.      * 
    24.      * @return void 
    25.      */ 
    26.     public function __construct() 
    27.     { 
    28.         $this->middleware('guest:admin', ['except' => 'logout']); 
    29.         $this->username = config('admin.global.username'); 
    30.     } 
    31.  
    32.     /** 
    33.      * 重写登录视图页面 
    34.      */ 
    35.     public function showLogin() 
    36.     { 
    37.         return view('admin.login.index'); 
    38.     } 
    39.  
    40.     /** 
    41.      * 自定义认证驱动 
    42.      * @return mixed 
    43.      */ 
    44.     protected function guard() 
    45.     { 
    46.         return auth()->guard('admin'); 
    47.     } 
    48.  
    49.  
    修改 app\Http\Middleware\RedirectIfAuthenticated.php:

    1. public function handle($request, Closure $next$guard = null) 
    2.     { 
    3.         if (Auth::guard($guard)->check()) { 
    4.             // 根据不同 guard 跳转到不同的页面 
    5.             $url = $guard ? 'admin/dash':'/home'
    6.             return redirect($url); 
    7.         } 
    8.  
    9.         return $next($request); 
    10.     } 
    编辑 Admin\AdminController.php:

    1. <?php 
    2.  
    3. namespace App\Http\Controllers\Admin; 
    4.  
    5. use App\Http\Controllers\Controller; 
    6.  
    7. class AdminController extends Controller 
    8.     /** 
    9.      * Create a new controller instance. 
    10.      * 
    11.      * @return void 
    12.      */ 
    13.     public function __construct() 
    14.     { 
    15.         $this->middleware('auth.admin:admin'); 
    16.     } 
    17.     // 
    18.     public function index() 
    19.     { 
    20.         dd('用户名:'.auth('admin')->user()->name); 
    21.     } 
    编辑 app\Http\Middleware\AdminAuthMiddleware.php

    1. public function handle($request, Closure $next$guard = null) 
    2.     { 
    3.         if (Auth::guard($guard)->guest()) { 
    4.             if ($request->ajax() || $request->wantsJson()) { 
    5.                 return response('Unauthorized.', 401); 
    6.             } else { 
    7.                 return redirect()->guest('admin/login'); 
    8.             } 
    9.         } 
    10.         return $next($request); 
    11.     } 

    在 app\Http\Kernel.php 中注册:

    1. protected $routeMiddleware = [ 
    2.        ··· ··· 
    3.         'auth.admin' => \App\Http\Middleware\AdminAuthMiddleware::class
    4.     ]; 
    注册路由

    编辑 routes/web.php :

    1. Route::group(['prefix' => 'admin','namespace' => 'Admin'],function ($router
    2.     $router->get('login''LoginController@showLogin')->name('admin.login'); 
    3.     $router->post('login''LoginController@login'); 
    4.     $router->post('logout''LoginController@logout'); 
    5.  
    6.     $router->get('index''AdminController@index'); 
    7. }); 

    视图文件创建和修改

    复制 resources\views\auth\login.blade.php,到 resources\views\admin\login\index.blade.php,修改表单提交地址

    1. {{ url('/login') }} 改成 {{ route('admin.login') }} 

    访问 你的站点/admin/login


    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-153-6122-1.html
    相关热词搜索: