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也可以?成Shell Script
Oct 09 PHP
深入解析php之sphinx
May 15 PHP
PHP 基于Yii框架中使用smarty模板的方法详解
Jun 13 PHP
Zend Studio 实用快捷键一览表(精心整理)
Aug 10 PHP
php中cookie的使用方法
Mar 29 PHP
php使用正则过滤js脚本代码实例
May 10 PHP
PHP中使用imagick实现把PDF转成图片
Jan 26 PHP
php计算整个目录大小的方法
Jun 19 PHP
摘自织梦CMS的HTTP文件下载类
Aug 08 PHP
PHP实现的简单适配器模式示例
Jun 22 PHP
PHP addcslashes()函数讲解
Feb 03 PHP
在laravel中使用with实现动态添加where条件
Oct 10 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
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
2006/07/09 PHP
php中判断一个字符串包含另一个字符串的方法
2007/03/19 PHP
php生成zip压缩文件的方法详解
2013/06/09 PHP
PHP使用json_encode函数时不转义中文的解决方法
2014/11/12 PHP
PHP文件读写操作相关函数总结
2014/11/18 PHP
PHP实现的多文件上传类及用法示例
2016/05/06 PHP
laravel 实现登陆后返回登陆前的页面方法
2019/10/03 PHP
用JavaScript将从数据库中读取出来的日期型格式化为想要的类型。
2009/08/15 Javascript
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
10个基于浏览器的JavaScript调试工具分享
2013/02/07 Javascript
JQuery分屏指示器图片轮换效果实例
2015/05/21 Javascript
javascript表单验证大全
2015/08/12 Javascript
初识 Vue.js 中的 *.Vue文件
2017/11/22 Javascript
详解基于Node.js的HTTP/2 Server实践
2018/05/31 Javascript
简单通过settimeout看javascript的运行机制
2019/05/10 Javascript
AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 Javascript
javascript实现放大镜功能
2020/12/09 Javascript
python双向链表实现实例代码
2013/11/21 Python
python实现简单温度转换的方法
2015/03/13 Python
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
解决Python2.7读写文件中的中文乱码问题
2018/04/12 Python
手写一个python迭代器过程详解
2019/08/27 Python
css3背景图片透明叠加属性cross-fade简介及用法实例
2013/01/08 HTML / CSS
世界第一曲奇连锁店:Mrs. Fields Cookies
2017/02/04 全球购物
美国第一个网上卖鞋零售商:OnlineShoes.com
2017/09/24 全球购物
购买美国制造的相框和画框架:Picture Frames
2018/08/14 全球购物
Roxy俄罗斯官方网站:冲浪和滑雪板的一切
2020/06/20 全球购物
C&A巴西网上商店:时尚、衣服、手机和鞋子
2020/06/07 全球购物
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
2016/05/09 面试题
20岁生日感言
2014/01/13 职场文书
英文商务邀请信
2014/01/22 职场文书
排查整治工作方案
2014/06/09 职场文书
十八大宣传标语
2014/10/09 职场文书
2015建军节87周年演讲稿
2015/03/19 职场文书
小学教师见习总结
2015/06/23 职场文书
把77A收信机改造成收音机
2022/04/05 无线电