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

2024-02-17 09:38

本文主要是介绍Laravel5.5 实现后台管理登录(自定义用户表登录),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近群里很多人文档,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

这篇关于Laravel5.5 实现后台管理登录(自定义用户表登录)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/717390

相关文章

使用animation.css库快速实现CSS3旋转动画效果

《使用animation.css库快速实现CSS3旋转动画效果》随着Web技术的不断发展,动画效果已经成为了网页设计中不可或缺的一部分,本文将深入探讨animation.css的工作原理,如何使用以及... 目录1. css3动画技术简介2. animation.css库介绍2.1 animation.cs

Java进行日期解析与格式化的实现代码

《Java进行日期解析与格式化的实现代码》使用Java搭配ApacheCommonsLang3和Natty库,可以实现灵活高效的日期解析与格式化,本文将通过相关示例为大家讲讲具体的实践操作,需要的可以... 目录一、背景二、依赖介绍1. Apache Commons Lang32. Natty三、核心实现代

SpringBoot实现接口数据加解密的三种实战方案

《SpringBoot实现接口数据加解密的三种实战方案》在金融支付、用户隐私信息传输等场景中,接口数据若以明文传输,极易被中间人攻击窃取,SpringBoot提供了多种优雅的加解密实现方案,本文将从原... 目录一、为什么需要接口数据加解密?二、核心加解密算法选择1. 对称加密(AES)2. 非对称加密(R

基于Go语言实现Base62编码的三种方式以及对比分析

《基于Go语言实现Base62编码的三种方式以及对比分析》Base62编码是一种在字符编码中使用62个字符的编码方式,在计算机科学中,,Go语言是一种静态类型、编译型语言,它由Google开发并开源,... 目录一、标准库现状与解决方案1. 标准库对比表2. 解决方案完整实现代码(含边界处理)二、关键实现细

详解如何在SpringBoot控制器中处理用户数据

《详解如何在SpringBoot控制器中处理用户数据》在SpringBoot应用开发中,控制器(Controller)扮演着至关重要的角色,它负责接收用户请求、处理数据并返回响应,本文将深入浅出地讲解... 目录一、获取请求参数1.1 获取查询参数1.2 获取路径参数二、处理表单提交2.1 处理表单数据三、

python通过curl实现访问deepseek的API

《python通过curl实现访问deepseek的API》这篇文章主要为大家详细介绍了python如何通过curl实现访问deepseek的API,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编... API申请和充值下面是deepeek的API网站https://platform.deepsee

SpringBoot实现二维码生成的详细步骤与完整代码

《SpringBoot实现二维码生成的详细步骤与完整代码》如今,二维码的应用场景非常广泛,从支付到信息分享,二维码都扮演着重要角色,SpringBoot是一个非常流行的Java基于Spring框架的微... 目录一、环境搭建二、创建 Spring Boot 项目三、引入二维码生成依赖四、编写二维码生成代码五

MyBatisX逆向工程的实现示例

《MyBatisX逆向工程的实现示例》本文主要介绍了MyBatisX逆向工程的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录逆向工程准备好数据库、表安装MyBATisX插件项目连接数据库引入依赖pom.XML生成实体类、

C#实现查找并删除PDF中的空白页面

《C#实现查找并删除PDF中的空白页面》PDF文件中的空白页并不少见,因为它们有可能是作者有意留下的,也有可能是在处理文档时不小心添加的,下面我们来看看如何使用Spire.PDFfor.NET通过C#... 目录安装 Spire.PDF for .NETC# 查找并删除 PDF 文档中的空白页C# 添加与删

Java实现MinIO文件上传的加解密操作

《Java实现MinIO文件上传的加解密操作》在云存储场景中,数据安全是核心需求之一,MinIO作为高性能对象存储服务,支持通过客户端加密(CSE)在数据上传前完成加密,下面我们来看看如何通过Java... 目录一、背景与需求二、技术选型与原理1. 加密方案对比2. 核心算法选择三、完整代码实现1. 加密上