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&amp;mysql(四)
Oct 09 PHP
一个简单的PHP&amp;MYSQL留言板源码
Jul 19 PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
May 14 PHP
php中使用Imagick实现图像直方图的实现代码
Aug 30 PHP
Sorting Array Values in PHP(数组排序)
Sep 15 PHP
php 解决旧系统 查出所有数据分页的类
Aug 27 PHP
wordpress自定义url参数实现路由功能的代码示例
Nov 28 PHP
php程序员应具有的7种能力小结
Nov 27 PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
Jun 17 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
Mar 18 PHP
解决yii2左侧菜单子级无法高亮问题的方法
May 08 PHP
PHP基于GD库实现的生成图片缩略图函数示例
Jul 05 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中文字符截取防乱码
2008/03/28 PHP
php购物网站支付paypal使用方法
2010/11/28 PHP
PHP使用Redis实现防止大并发下二次写入的方法
2017/10/09 PHP
PHP数组访问常用方法解析
2020/09/05 PHP
JQuery jsonp 使用示例代码
2009/08/12 Javascript
菜鸟javascript基础资料整理3 正则
2010/12/06 Javascript
Javascript的常规数组和关联数组对比小结
2012/05/24 Javascript
jquery与js函数冲突的两种解决方法
2013/09/09 Javascript
自己封装的javascript事件队列函数版
2014/06/12 Javascript
JS使用for循环遍历Table的所有单元格内容
2014/08/21 Javascript
js style动态设置table高度
2014/10/21 Javascript
微信公众号 客服接口的开发实例详解
2016/09/28 Javascript
微信小程序 Video API实例详解
2016/10/02 Javascript
详解nodeJs文件系统(fs)与流(stream)
2018/01/24 NodeJs
webpack分离css单独打包的方法
2018/06/12 Javascript
微信小程序之批量上传并压缩图片的实例代码
2018/07/05 Javascript
jQuery实现的自定义轮播图功能详解
2018/12/28 jQuery
详解jQuery中的getAll()和cleanData()
2019/04/15 jQuery
vue el-table实现行内编辑功能
2019/12/11 Javascript
javascript事件循环event loop的简单模型解释与应用分析
2020/03/14 Javascript
python中的五种异常处理机制介绍
2014/09/02 Python
在Django中限制已登录用户的访问的方法
2015/07/23 Python
Python使用正则实现计算字符串算式
2019/12/29 Python
欧缇丽英国官方网站:Caudalie英国
2016/08/17 全球购物
Dyson加拿大官方网站:购买戴森吸尘器,风扇,冷热器及配件
2016/10/26 全球购物
苹果音乐订阅:Apple Music
2018/08/02 全球购物
Otiumberg官网:英国半精致珠宝品牌
2021/01/16 全球购物
大学生饮食配送创业计划书
2014/01/04 职场文书
电子工程求职信
2014/07/17 职场文书
助人为乐好少年事迹材料
2014/08/18 职场文书
小学生田径运动会广播稿
2014/09/11 职场文书
党的群众路线教育实践活动党员个人整改措施
2014/10/27 职场文书
女性励志书籍推荐
2019/08/19 职场文书
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
2021/11/27 Vue.js
vue项目proxyTable配置和部署服务器
2022/04/14 Vue.js
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
2022/12/24 HTML / CSS