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 相关文章推荐
一个多文件上传的例子(原创)
Oct 09 PHP
PHP 遍历XP文件夹下所有文件
Nov 27 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
Jul 23 PHP
浅析PHP文件下载原理
Dec 25 PHP
对PHP PDO的一些认识小结
Jan 23 PHP
分享自定义的几个PHP功能函数
Apr 15 PHP
PHP Echo字符串的连接格式
Mar 07 PHP
PHP 无限级分类
May 04 PHP
php微信公众号开发之秒杀
Oct 20 PHP
使用vs code编辑调试php配置的方法
Jan 29 PHP
PHP的curl函数的用法总结
Feb 14 PHP
Swoole源码中如何查询Websocket的连接问题详解
Aug 30 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 中的批处理的实现
2007/06/14 PHP
微信支付PHP SDK之微信公众号支付代码详解
2015/12/09 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
php-fpm添加service服务的例子
2018/04/27 PHP
实现PHP中session存储及删除变量
2018/10/15 PHP
javascript两段代码,两个小技巧
2010/02/04 Javascript
一行代码实现纯数据json对象的深度克隆实现思路
2013/01/09 Javascript
JavaScript实现随机替换图片的方法
2015/04/16 Javascript
jQuery实现灰蓝风格标准二级下拉菜单效果代码
2015/08/31 Javascript
Node.js DES加密的简单实现
2016/07/07 Javascript
基于jQuery的checkbox全选问题分析
2016/11/18 Javascript
分享一个精简的vue.js 图片lazyload插件实例
2017/03/13 Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
2017/03/30 jQuery
JS实现简易的图片拖拽排序实例代码
2017/06/09 Javascript
微信小程序 动画的简单实例
2017/10/12 Javascript
微信小程序scroll-x失效的完美解决方法
2018/07/18 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
2018/08/05 Javascript
关于js陀螺仪的理解分析
2019/04/11 Javascript
使用p5.js临摹动态图形
2019/10/23 Javascript
详解JS预解析原理
2020/06/16 Javascript
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
让python json encode datetime类型
2010/12/28 Python
Python使用matplotlib实现绘制自定义图形功能示例
2018/01/18 Python
使用Python实现跳帧截取视频帧
2019/05/31 Python
Pandas中DataFrame的分组/分割/合并的实现
2019/07/16 Python
python openCV自制绘画板
2020/10/27 Python
解决pycharm不能自动保存在远程linux中的问题
2021/02/06 Python
美国快时尚彩妆品牌:Winky Lux(透明花瓣润唇膏)
2018/11/06 全球购物
意大利巧克力店:Chocolate Shop
2019/07/24 全球购物
最美家庭活动方案
2014/08/31 职场文书
房地产经营管理专业自荐信
2014/09/02 职场文书
2015年妇联工作总结范文
2015/04/22 职场文书
我的中国梦主题教育活动总结
2015/05/07 职场文书
2015年公司保安年终工作总结
2015/05/14 职场文书
女方家长婚礼致辞
2015/07/27 职场文书
《天使的翅膀》读后感3篇
2019/12/20 职场文书