Laravel 5.5基于内置的Auth模块实现前后台登陆详解


Posted in PHP onDecember 21, 2017

前言

本文主要介绍了关于Laravel 5.5基于内置的Auth模块实现前后台登陆的相关内容,更多关于Auth模块的内容大家可以参考这篇文章:https://3water.com/article/121401.htm

下面话不多说了,来一起看看详细的介绍吧。

方法如下:

步骤1:生成Auth

在项目建立完成后,生成内置Auth组件:

php artisan make:auth

步骤2:添加guard

打开config\auth.php,为方便前后台用户切换,项目共用Users表

'guards' => [
 //...
 'admin' => [
  'driver' => 'session',
  'provider' => 'users',
 ],
 //...
 ],

步骤3:实现基类

class AdminController extends BaseController
{
 use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

 public function __construct()
 {
 $this->middleware('auth:admin');
 }
}

步骤4:实现后台登陆控制器

新建appcontrollersAdminLoginController.php

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
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.
 *
 * @var string
 */
 protected $redirectTo = '/admin';
 /**
 * Create a new controller instance.
 *
 * @return void
 */
 public function __construct()
 {
 $this->middleware('guest:admin')->except('logout');
 }
 /**
 * 重写登陆页面
 * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
 */
 public function showLoginForm()
 {
 return view('backend.login');
 }
 /**
 * 重写退出方法
 * @param Request $request
 * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
 */
 public function logout(Request $request)
 {
 $this->guard()->logout();
 $request->session()->flush();
 $request->session()->regenerate();
 return redirect('/admin/login');
 }
 /**
 * 重写guard认证
 * @return mixed
 */
 protected function guard()
 {
 return Auth::guard('admin');
 }
}

步骤5:实现登陆后跳转到不同路径

app\Middleware\RedirectIfAuthenticated.php

public function handle($request, Closure $next, $guard = null)
{
 if (Auth::guard($guard)->check()) {
  $path = $guard ? '/admin' : '/home';
  return redirect($path);
 }
 return $next($request);
}

步骤6:实现未通过认证跳转不同登陆页

app\Exceptions\Handler.php

/**
 * 重写实现未认证用户跳转至相应登陆页
 * @param \Illuminate\Http\Request $request
 * @param AuthenticationException $exception
 * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
 */
 protected function unauthenticated($request, AuthenticationException $exception)
 {
 if($request->expectsJson()){
  return response()->json(['message' => $exception->getMessage()], 401);
 }else{
  return in_array('admin', $exception->guards()) ? return redirect()->guest('/admin/login') : redirect()->guest('login');
 }
 }

完成

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
收集的PHP中与数组相关的函数
Mar 22 PHP
用windows下编译过的eAccelerator for PHP 5.1.6实现php加速的使用方法
Sep 30 PHP
PHP 组件化编程技巧
Jun 06 PHP
深入phpMyAdmin的安装与配置的详细步骤
May 07 PHP
PHP迭代器实现斐波纳契数列的函数
Nov 12 PHP
百度地图API应用之获取用户的具体位置
Jun 10 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
Jun 12 PHP
PHP实现长文章分页实例代码(附源码)
Feb 03 PHP
php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
Jul 12 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
Oct 25 PHP
PHP封装XML和JSON格式数据接口操作示例
Mar 06 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
Jan 22 PHP
PHP实现生成模糊图片的方法示例
Dec 21 #PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 #PHP
在云虚拟主机部署thinkphp5项目的步骤详解
Dec 21 #PHP
php获取微信共享收货地址的方法
Dec 21 #PHP
php实现socket推送技术的示例
Dec 20 #PHP
PHP实现模拟http请求的方法分析
Dec 20 #PHP
php封装db类连接sqlite3数据库的方法实例
Dec 19 #PHP
You might like
十天学会php之第二天
2006/10/09 PHP
php自动给文章加关键词链接的函数代码
2012/11/29 PHP
PHP输出九九乘法表代码实例
2015/03/27 PHP
php三元运算符知识汇总
2015/07/02 PHP
php如何实现只替换一次或N次
2015/10/29 PHP
js中top的作用深入剖析
2014/03/04 Javascript
wap图片滚动特效无css3元素纯js脚本编写
2014/08/22 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
浅谈$('div a') 与$('div&gt;a')的区别
2016/07/18 Javascript
Bootstrap Table使用方法详解
2016/08/01 Javascript
使用重写url机制实现验证码换一张功能
2017/08/01 Javascript
微信小程序获取循环元素id以及wx.login登录操作
2017/08/17 Javascript
浅析Javascript中双等号(==)隐性转换机制
2017/10/27 Javascript
three.js中文文档学习之创建场景
2017/11/20 Javascript
vue引用js文件的多种方式(推荐)
2018/05/17 Javascript
vue-cli history模式实现tomcat部署报404的解决方式
2019/09/06 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
2019/10/23 jQuery
JS+html5实现异步上传图片显示上传文件进度条功能示例
2019/11/09 Javascript
[03:07]完美世界DOTA2联赛PWL DAY10 决赛集锦
2020/11/11 DOTA
Python中操作mysql的pymysql模块详解
2016/09/13 Python
Python基于回溯法子集树模板解决取物搭配问题实例
2017/09/02 Python
用不到50行的Python代码构建最小的区块链
2017/11/16 Python
Python断言assert的用法代码解析
2018/02/03 Python
python处理自动化任务之同时批量修改word里面的内容的方法
2019/08/23 Python
Python实现打包成库供别的模块调用
2020/07/13 Python
python计算auc的方法
2020/09/09 Python
Django 权限管理(permissions)与用户组(group)详解
2020/11/30 Python
使用CSS禁止textarea调整大小功能的方法
2015/03/13 HTML / CSS
使用CSS实现弹性视频html5案例实践
2012/12/26 HTML / CSS
2019年Java 最常见的 面试题
2016/10/19 面试题
个人找工作自荐信格式
2013/09/21 职场文书
给排水专业应届生求职信
2013/10/12 职场文书
企业军训感想
2014/02/07 职场文书
个人公开承诺书
2014/03/28 职场文书
车间主任岗位职责范本
2015/04/08 职场文书
Python绘画好看的星空图
2022/03/17 Python