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

吾爱主题 阅读:124 2021-08-24 15:51:00 评论:0

最近群里很多人文档,laravel如何做会员和管理两个身份登录,今天把教程分享一下

自定义用户表登录

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

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <?php   'guards' => [    '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

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

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

 

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

执行php artisan migrate

生成临时数据

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

?
1 2 3 4 5 6 7 8 9 10 $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),   ]; });

打开命令行输入:

?
1 2 3 4 php artisan tinker   use App;   factory(App\Admin:: class ,5)->create()   //生成5条测试数据,你要几条就输入多少(Class,num)

 

更改 Admin 模型类

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

创建控制器

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

编辑 Admin/LoginController.php:

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

修改 app\Http\Middleware\RedirectIfAuthenticated.php:

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

编辑 Admin\AdminController.php:

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

编辑 app\Http\Middleware\AdminAuthMiddleware.php

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

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

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

注册路由

编辑 routes/web.php :

?
1 2 3 4 5 6 7 8 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,修改表单提交地址

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

访问 你的站点/admin/login

以上这篇Laravel5.5 实现后台管理登录的方法(自定义用户表登录)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/sunjinyan_1/article/details/80927611

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容