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 相关文章推荐
关于mysql 字段的那个点为是定界符
Jan 15 PHP
PHP 文件类型判断代码
Mar 13 PHP
php ob_flush,flush在ie中缓冲无效的解决方法
May 09 PHP
PHP 日,周,月点击排行统计
Jan 11 PHP
php中如何使对象可以像数组一样进行foreach循环
Aug 09 PHP
PHP中执行cmd命令的方法
Oct 11 PHP
php动态函数调用方法
May 21 PHP
PHP中文竖排转换实现方法
Oct 23 PHP
PHP实现适用于文件内容操作的分页类
Jun 15 PHP
Yii框架用户登录session丢失问题解决方法
Jan 07 PHP
php实现微信支付之退款功能
May 30 PHP
Laravel中的chunk组块结果集处理与注意问题
Aug 15 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
留言板翻页的实现详解
2006/10/09 PHP
PHP截取汉字乱码问题解决方法mb_substr函数的应用
2008/03/30 PHP
php ss7.5的数据调用 (笔记)
2010/03/08 PHP
解析CodeIgniter自定义配置文件
2013/06/18 PHP
php中cookie的使用方法
2014/03/29 PHP
ThinkPHP 表单自动验证运用示例
2014/10/13 PHP
php实现批量上传数据到数据库(.csv格式)的案例
2017/06/18 PHP
PHP设计模式之抽象工厂模式实例分析
2019/03/25 PHP
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
2011/06/20 Javascript
JS选中checkbox后获取table内一行TD所有数据的方法
2015/07/01 Javascript
jQuery原生的动画效果
2015/07/10 Javascript
javascript实现起伏的水波背景效果
2016/05/16 Javascript
JS去除空格和换行的正则表达式(推荐)
2016/06/14 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
2017/03/14 Javascript
div中文字内容溢出常见的解决方法
2017/03/16 Javascript
微信小程序实现的贪吃蛇游戏【附源码下载】
2018/01/03 Javascript
在vue中,v-for的索引index在html中的使用方法
2018/03/06 Javascript
Javascript 编码约定(编码规范)
2018/03/11 Javascript
js核心基础之构造函数constructor用法实例分析
2019/05/11 Javascript
详解基于Vue/React项目的移动端适配方案
2019/08/23 Javascript
javascript实现前端成语点击验证
2020/06/24 Javascript
[17:00]DOTA2 HEROS教学视频教你分分钟做大人-帕克
2014/06/10 DOTA
Python xlrd读取excel日期类型的2种方法
2015/04/28 Python
python如何查看系统网络流量的信息
2016/09/12 Python
对python sklearn one-hot编码详解
2018/07/10 Python
python 直接赋值和copy的区别详解
2019/08/07 Python
python IDLE添加行号显示教程
2020/04/25 Python
sublime3之内网安装python插件Anaconda的流程
2020/11/10 Python
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
中国制造网:Made-in-China.com
2019/10/25 全球购物
铣床操作工岗位职责
2014/06/13 职场文书
出纳工作检讨书范文
2014/12/27 职场文书
检讨书格式
2015/01/23 职场文书
教师工作态度自我评价
2015/03/05 职场文书
教师读书笔记
2015/06/29 职场文书
心得体会该怎么写呢?
2019/06/27 职场文书