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后台运行PHP脚本,并获取该脚本的Process ID的代码
Sep 19 PHP
php excel reader读取excel内容存入数据库实现代码
Dec 06 PHP
PHP多线程批量采集下载美女图片的实现代码(续)
Jun 03 PHP
Drupal7 form表单二次开发要点与实例
Mar 02 PHP
PHP检测移动设备类mobile detection使用实例
Apr 14 PHP
php绘图之加载外部图片的方法
Jan 24 PHP
Symfony2学习笔记之控制器用法详解
Mar 17 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
Jul 09 PHP
php微信开发自定义菜单
Aug 27 PHP
Django 中 cookie的使用
Aug 17 PHP
ThinkPHP中图片按比例切割的代码实例
Mar 08 PHP
PhpStorm+xdebug+postman调试技巧分享
Sep 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
判断php数组是否为索引数组的实现方法
2013/06/13 PHP
php+mysql删除指定编号员工信息的方法
2015/01/14 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
jQuery中的常用事件总结
2009/12/27 Javascript
用jquery实现下拉菜单效果的代码
2010/07/25 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
jquery代码实现多选、不同分享功能
2015/07/31 Javascript
jquery常用函数与方法汇总
2015/09/01 Javascript
Jquery zTree 树控件异步加载操作
2016/02/25 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
2016/10/30 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
2017/11/24 Javascript
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
微信小程序自定义tabBar组件开发详解
2020/09/24 Javascript
小程序从手动埋点到自动埋点的实现方法
2019/01/24 Javascript
微信小程序定义和调用全局变量globalData的实现
2019/11/01 Javascript
vue之延时刷新实例
2019/11/14 Javascript
jquery实现手风琴案例
2020/05/04 jQuery
[04:13]2018国际邀请赛典藏宝瓶Ⅱ饰品一览
2018/07/21 DOTA
python 文件与目录操作
2008/12/24 Python
用Python代码来解图片迷宫的方法整理
2015/04/02 Python
python实现用户管理系统
2018/01/10 Python
python发送邮件脚本
2018/05/22 Python
Django使用redis缓存服务器的实现代码示例
2019/04/28 Python
详解python中的线程与线程池
2019/05/10 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
N:Philanthropy官网:美国洛杉矶基础款服装
2020/06/09 全球购物
小班秋游活动方案
2014/02/22 职场文书
对公司合理化的建议书
2014/03/12 职场文书
禁毒宣传工作方案
2014/05/23 职场文书
结对共建协议书
2014/08/20 职场文书
社会体育专业大学生职业生涯规划书
2014/09/17 职场文书
欢迎新生标语2015
2015/07/16 职场文书
python numpy中setdiff1d的用法说明
2021/04/22 Python
MySql新手入门的基本操作汇总
2021/05/13 MySQL
python 详解turtle画爱心代码
2022/02/15 Python