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排序算法(冒泡排序,快速排序)
Oct 09 PHP
php setcookie(name, value, expires, path, domain, secure) 参数详解
Jun 28 PHP
关于js和php对url编码的处理方法
Mar 04 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
May 10 PHP
smarty内置函数section的用法
Jan 22 PHP
php绘制一条直线的方法
Jan 24 PHP
php中注册器模式类用法实例分析
Nov 03 PHP
PHP上传图片、删除图片简单实例
Nov 12 PHP
PHP实现字符串大小写转函数的功能实例
Feb 06 PHP
php封装的pdo数据库操作工具类与用法示例
May 08 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
Dec 18 PHP
PHPstorm激活码2020年5月13日亲测有效
Sep 17 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
在apache下限制每个虚拟主机的并发数!!!!
2006/10/09 PHP
检查php文件中是否含有bom的函数
2012/05/31 PHP
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
2016/03/23 PHP
PHP数据库编程之MySQL优化策略概述
2017/08/16 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
用jscript实现新建和保存一个word文档
2007/06/15 Javascript
js局部刷新页面时间具体实现
2013/07/04 Javascript
js日期相关函数总结分享
2013/10/15 Javascript
js 剪切板的用法(clipboardData.setData)与js match函数介绍
2013/11/19 Javascript
js获取视频时长代码
2014/04/10 Javascript
使用时间戳解决ie缓存的问题
2014/08/20 Javascript
js格式化时间小结
2014/11/03 Javascript
javascript同步服务器时间和同步倒计时小技巧
2015/09/24 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
浅谈Angular7 项目开发总结
2018/12/19 Javascript
解决Vue打包后访问图片/图标不显示的问题
2019/07/25 Javascript
详解JWT token心得与使用实例
2019/08/02 Javascript
JS中this的4种绑定规则详解
2020/02/04 Javascript
使用konva和vue-konva库实现拖拽滑块验证功能
2020/04/27 Javascript
[10:49]2014国际邀请赛 叨叨刀塔第二期为真正的电竞喝彩
2014/07/21 DOTA
对python中的logger模块全面讲解
2018/04/28 Python
对python 自定义协议的方法详解
2019/02/13 Python
Python3enumrate和range对比及示例详解
2019/07/13 Python
python实现大文本文件分割
2019/07/22 Python
python topk()函数求最大和最小值实例
2020/04/02 Python
python中altair可视化库实例用法
2021/01/26 Python
CSS3移动端vw+rem不依赖JS实现响应式布局的方法
2019/01/23 HTML / CSS
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
阿迪达斯墨西哥官方网站:adidas墨西哥
2017/11/03 全球购物
巴西男士胡须和头发护理产品商店:Beard
2017/11/13 全球购物
学校班班通实施方案
2014/06/11 职场文书
环境保护标语
2014/06/20 职场文书
小学爱国卫生月活动总结
2014/06/30 职场文书
安全生产年活动总结
2014/08/29 职场文书
成本低的5个创业项目:投资小、赚钱快
2019/08/20 职场文书
springboot layui hutool Excel导入的实现
2022/03/31 Java/Android