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 前一天或后一天的日期
Jun 28 PHP
php在服务器执行exec命令失败的解决方法
Mar 03 PHP
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
Apr 09 PHP
php empty()与isset()区别的详细介绍
Jun 17 PHP
PHP APC缓存配置、使用详解
Mar 06 PHP
thinkphp验证码显示不出来的解决方法
Mar 29 PHP
php通过ajax实现双击table修改内容
Apr 28 PHP
php中ob函数缓冲机制深入理解
Aug 03 PHP
PHP微信API接口类
Aug 22 PHP
PHP有序表查找之二分查找(折半查找)算法示例
Feb 09 PHP
php微信开发之谷歌测距
Jun 14 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
Mar 02 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(1) php开发环境配置
2010/02/15 PHP
第4章 数据处理-php数组的处理-郑阿奇
2011/07/04 PHP
PHP读取大文件的类SplFileObject使用介绍
2014/04/09 PHP
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
php实现文件上传及头像预览功能
2017/01/15 PHP
PHP hebrev()函数用法讲解
2019/02/21 PHP
php探针使用原理和技巧讲解
2019/09/17 PHP
laravel 实现用户登录注销并限制功能
2019/10/24 PHP
javascript StringBuilder类实现
2008/12/22 Javascript
快速解决jquery之get缓存问题的最简单方法介绍
2013/12/19 Javascript
js+css实现文字散开重组动画特效代码分享
2015/08/21 Javascript
JavaScript编程学习技巧汇总
2016/02/21 Javascript
bootstrap3 兼容IE8浏览器!
2016/05/02 Javascript
微信小程序  checkbox组件详解及简单实例
2017/01/10 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
2017/11/28 Javascript
浅析Vue实例以及生命周期
2018/08/14 Javascript
jQuery实现基本淡入淡出效果的方法详解
2018/09/05 jQuery
基于Vue 实现一个中规中矩loading组件
2019/04/03 Javascript
vue-cli3 配置开发与测试环境详解
2019/05/17 Javascript
javascript function(函数类型)使用与注意事项小结
2019/06/10 Javascript
JavaScript中的惰性载入函数及优势
2020/02/18 Javascript
python使用matplotlib画饼状图
2018/09/25 Python
Python3进制之间的转换代码实例
2019/08/24 Python
Python 函数绘图及函数图像微分与积分
2019/11/20 Python
美国一家著名的手表在线折扣网站:Discount Watch Store
2020/02/24 全球购物
Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型
2013/10/30 面试题
学校后勤人员职责
2013/12/27 职场文书
高一家长会邀请函
2014/01/12 职场文书
收银员的岗位职责范本
2014/02/04 职场文书
物业保安员岗位职责
2014/03/14 职场文书
学校宣传标语
2014/06/18 职场文书
爱国口号
2014/06/19 职场文书
社区创先争优承诺书
2014/08/30 职场文书
感谢信范文大全
2015/01/23 职场文书
《狼牙山五壮士》教学反思
2016/02/17 职场文书
漫画「古见同学有交流障碍症」第25卷封面公开
2022/03/21 日漫