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单件模式结合命令链模式使用说明
Sep 07 PHP
php程序之die调试法 快速解决错误
Sep 17 PHP
ThinkPHP自动验证失败的解决方法
Jun 09 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
Oct 10 PHP
PHP中使用asort进行中文排序失效的问题处理
Aug 18 PHP
thinkphp模板的包含与渲染实例分析
Nov 26 PHP
ThinkPHP开发框架函数详解:C方法
Aug 14 PHP
Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解
Mar 05 PHP
PHP实现的网站目录扫描索引工具
Sep 08 PHP
Laravel+jQuery实现AJAX分页效果
Sep 14 PHP
PHP表单验证内容是否为空的实现代码
Nov 14 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
Jul 03 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
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
2014/07/01 PHP
PHP创建word文档的方法(平台无关)
2016/03/29 PHP
PHP上传文件及图片到七牛的方法
2018/07/25 PHP
用js自动判断浏览器分辨率的代码
2007/01/28 Javascript
Javascript事件热键兼容ie|firefox
2010/12/30 Javascript
JQuery模板插件 jquery.tmpl 动态ajax扩展
2011/11/10 Javascript
js和css写一个可以自动隐藏的悬浮框
2014/03/05 Javascript
基于jQuery实现中英文切换导航条效果
2016/09/18 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
2017/03/14 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
webpack4 处理CSS的方法示例
2018/09/03 Javascript
element UI upload组件上传附件格式限制方法
2018/09/04 Javascript
详解angular2.x创建项目入门指令
2018/10/11 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
javascriptvoid(0)含义以及与&quot;#&quot;的区别讲解
2019/01/19 Javascript
使用react context 实现vue插槽slot功能
2019/07/18 Javascript
python 生成不重复的随机数的代码
2011/05/15 Python
Hadoop中的Python框架的使用指南
2015/04/22 Python
Python实现模拟时钟代码推荐
2015/11/08 Python
Python基于分水岭算法解决走迷宫游戏示例
2017/09/26 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
2018/09/19 Python
python cv2在验证码识别中应用实例解析
2019/12/25 Python
pytorch 实现查看网络中的参数
2020/01/06 Python
python多线程实现代码(模拟银行服务操作流程)
2020/01/13 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
2020/04/10 Python
html5小程序飞入购物车(抛物线绘制运动轨迹点)
2020/10/19 HTML / CSS
英国计算机产品零售商:Novatech(定制个人电脑、笔记本电脑、工作站和服务器)
2018/01/28 全球购物
remote接口和home接口主要作用
2013/05/15 面试题
2014年学校总务处工作总结
2014/12/08 职场文书
丧事答谢词
2015/01/05 职场文书
2015年医德考评自我评价
2015/03/03 职场文书
幼儿园重阳节活动总结
2015/05/05 职场文书
幼儿园开学家长寄语(2016秋季)
2015/12/03 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书
《三国志》赏析
2019/08/27 职场文书
SpringBoot整合RabbitMQ的5种模式实战
2021/08/02 Java/Android