1、添加guard 认证驱动

'guards' => ['web' => ['driver' => 'session','provider' => 'users',],'admin' => ['driver' => 'session','provider' => 'admins',],'api' => ['driver' => 'token','provider' => 'users',],'providers' => ['users' => ['driver' => 'eloquent','model' => App\User::class,],'admins' => ['driver' => 'eloquent','model' => App\Models\Admin::class,],],复制代码

2、创建后台用户表和model

php artisan make:model Models/Admin -m复制代码

3、修改Admin模型类如下

<?phpnamespace App\Models;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',];
}复制代码

4、在数据库迁移文件 _create_admins_table ,复制 users 迁移文件里的字段

public function up()
{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, 添加如下数据:$factory->define(App\Models\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), ]; });打开命令行输入:
php artisan tinker
use App
factory(App\Models\Admin::class,5)->create() //生成5条测试数据,你要几条就输入多少(Class,num) 复制代码

5、创建控制器

php artisan make:controller Admin/LoginController
php artisan make:controller Admin/AdminController 复制代码

6、编辑 Admin/LoginController.php ,代码如下:

<?phpnamespace App\Http\Controllers\Admin;use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Foundation\Auth\AuthenticatesUsers;class LoginController extends Controller
{/*|--------------------------------------------------------------------------| Login Controller|--------------------------------------------------------------------------|| This controller handles authenticating users for the application and| redirecting them to your home screen. The controller uses a trait| to conveniently provide its functionality to your applications.|*/use AuthenticatesUsers;/*** Where to redirect users after login / registration.** @var string*/protected $redirectTo = '/admin';protected $username;/*** 用户名登陆*/public function username(){return 'name';}/*** 多字段登录并判断状态*/public function attemptLogin(Request $request){$username = $request->input('name');$password = $request->input('password');// 验证用户名登录方式$usernameLogin = $this->guard()->attempt(['name' => $username, 'password' => $password,'status'=>1], $request->has('remember'));if ($usernameLogin) {return true;}// 验证手机号登录方式$mobileLogin = $this->guard()->attempt(['mobile' => $username, 'password' => $password,'status'=>1], $request->has('remember'));if ($mobileLogin) {return true;}// 验证邮箱登录方式$emailLogin = $this->guard()->attempt(['email' => $username, 'password' => $password,'status'=>1], $request->has('remember'));if ($emailLogin) {return true;}return false;}/*** Create a new controller instance.* @return void*/public function __construct(){$this->middleware('guest:admin', ['except' => 'logout']);$this->username = config('admin.global.username');}/*** 重写登录视图页面*/public function showLoginForm(){return view('admin.login');}/*** 退出到登录页面*/public function logout(Request $request){$this->guard()->logout();$request->session()->invalidate();return redirect('/admin/login');}/*** 验证登录*/protected function validateLogin(Request $request){$this->validate($request, [$this->username() => 'required|string','password' => 'required|string','captcha' => 'required|captcha',]);}/*** 自定义认证驱动*/protected function guard(){return auth()->guard('admin');}
}复制代码

7、在 LoginController 中我们在构造函数中修改了 guest 中间件

  • app\Http\Middleware\RedirectIfAuthenticated.php
<?phpnamespace App\Http\Middleware;use Closure;
use Illuminate\Support\Facades\Auth;class RedirectIfAuthenticated
{/*** Handle an incoming request.** @param  \Illuminate\Http\Request  $request* @param  \Closure  $next* @param  string|null  $guard* @return mixed*/public function handle($request, Closure $next, $guard = null){if (Auth::guard($guard)->check()) {// 根据不同 guard 跳转到不同的页面$url = $guard ? '/admin':'/';return redirect($url);}return $next($request);}
}复制代码

8、编辑 Admin/AdminController.php ,代码如下

<?phpnamespace App\Http\Controllers\Admin;use Illuminate\Http\Request;use App\Http\Requests;
use App\Http\Controllers\Controller;class AdminController extends Controller
{/*** Create a new controller instance.** @return void*/public function __construct(){$this->middleware('auth.admin:admin');}/*** Show the application dashboard.** @return \Illuminate\Http\Response*/public function index(){dd('后台首页,当前用户名:'.auth('admin')->user()->name);}
}复制代码

9、在 AdminController 构造函数中我们添加了一个 auth.admin Middlewar

php artisan make:middleware AdminAuth<?phpnamespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;class AdminAuth
{/*** Handle an incoming request.** @param  \Illuminate\Http\Request  $request* @param  \Closure  $next* @return mixed*/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);}
}复制代码

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

protected $routeMiddleware = [......'auth.admin' => \App\Http\Middleware\AdminAuth::class,......
];复制代码

11、在 routes/web.php 中添加如下路由:

Route::group(['prefix'=>'admin','namespace'=>'Admin'],function (){//后台登陆退出Route::get('login', 'LoginController@showLoginForm')->name('admin.login');Route::post('login', 'LoginController@login');Route::post('logout', 'LoginController@logout')->name('admin.logout');//后台首页Route::get('/', 'AdminController@index')->name('admin.index');});复制代码

最后把提交地址的路由改成 {{ route('admin.login') }}

Laravel5.6 实现后台管理登录(自定义用户表登录)相关推荐

  1. Django之使用自定义用户表(AbstractUser)/自定义登录验证(jwt)/获取当前登录用户

    基本步骤: 一.自定义用户表: 1.自定义的用户表继承AbstractUser: 2.settings.py添加配置,指向用户表:AUTH_USER_MODEL = 'myUser.Account'( ...

  2. 后台管理使用微信扫码登录(小程序登录)

    后台管理登录页添加一个微信登录按钮,点击弹窗二维码 代码实现: /*** 该页面原本是用户协议页(产线页面),目前接入微信授权登录功能* 原因:微信扫码登录,后端生成的二维码仅能跳转当前 生产环境小程 ...

  3. Asp.NetMVC利用LigerUI搭建一个简单的后台管理详解(函登录验证)

    上一篇 Asp.Net 中Grid详解两种方法使用LigerUI加载数据库数据填充数据分页 了解了LigerUI 中Grid的基本用法  现在结合上一篇的内容做一个简单的后台管理,当然也有前台的页面. ...

  4. Asp.NetMVC利用LigerUI搭建一个简单的后台管理详解(含登录验证)

    1.打开VS新建一个MVC项目,右键点击项目新建一个区域Admin作为后台部分 2.既然要做登录限制我们在App_Start下面新建一个类 继承Controller作为基处理控制器. 里面Sessio ...

  5. python3 django2开发个人商城网站(自定义用户表保持登录状态功能)

    最近想学爬虫,但是呢,我想搭建一个网站来熟悉一下网页中的东西,我起初的想法是做一个个人博客网站,我django项目都创建了,我用了几天的时间来构思这个网站应该怎么做,正当我在构思的时候,我突然有了一个 ...

  6. JBPM4.4总结-嵌入自己的用户体系(集成自定义用户表)

    很多时候,JBPM自己提供的用户系统是不够用的,这时候就要求我们自己去扩展自己的用户体系.JBPM允许外挂一个用户体系. 如果想嵌入自己的用户体系,只需如下五步: 一:创建MesUser,MesGro ...

  7. mysql用户登录和第三方登录_mysql 用户表结构设计,第三方登录

    说起用户表,大概是每个应用/网站立项动工(码农们)考虑的第一件事情.用户表结构的设计,算是整个后台架构的基石.如果基石不稳,待到后面需求跟进了发现不能应付,回过头来反复修改用户表,要大大小小作改动的地 ...

  8. 第三方登录数据库用户表结构设计

    说起用户表,大概是每个应用/网站立项动工(码农们)考虑的第一件事情.用户表结构的设计,算是整个后台架构的基石.如果基石不稳,待到后面需求跟进了发现不能应付,回过头来反复修改用户表,要大大小小作改动的地 ...

  9. django自定义用户表

    django自带了用户表. -- auto-generated definition create table auth_user (id int auto_incrementprimary key, ...

最新文章

  1. 空间点像素索引(三)
  2. vue-router如何在router-link标签绑定click点击事件、keyup、change等事件
  3. python读取excelsheet-一文看懂用Python读取Excel数据
  4. 右左法则----复杂指针解析
  5. Beta阶段项目总结
  6. java防止表单重复提交
  7. BugKuCTF WEB 网站被黑
  8. ITK:创建一个RGB图像
  9. 【openjudge 1.11 07】和为给定数
  10. 前端学习(1960)vue之电商管理系统电商系统之分类参数的基本结构
  11. .lastevent、!analyze(dump分析、异常错误码查询)
  12. 苹果公布iPhone 12屏幕更换价格,果然没让人失望!
  13. JS导出txt文本文件,Netsuite方案
  14. 使用SSIS包将多个Excel文件中的数据导入SQL Server表中
  15. 生成逼真3D人偶,居然不用3D形状建模,还能学会你的舞步 | 三星CVPR Oral
  16. 2016网易研发题目
  17. 第三堂:Java程序流程控制
  18. 强大且易用的乐谱制作MuseScore 3
  19. (XWZ)的python学习笔记——pandas
  20. TunePat Amazon Video Downloader使用教程

热门文章

  1. Protocol Buffer数据编码
  2. leetcode 1: 找出两个数相加等于给定数 two sum
  3. 前端一HTML:十五: 层叠,权重,优先级的关系
  4. python三十一:random模块
  5. 密码找回功能可能存在的问题
  6. 【转】语音、音频的思考
  7. yum安装zlib出错
  8. oracle 数据库管理员职责
  9. 设计模式 分析模式 华容道 中文分词算法......
  10. windows搭建内网 域环境 域控制器 win7加入域