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实现代码
Apr 22 PHP
php HtmlReplace输入过滤安全函数
Jul 03 PHP
PHP中对于浮点型的数据需要用不同的方法解决
Mar 11 PHP
PHP生成图片验证码、点击切换实例
Jun 25 PHP
ThinkPHP在Cli模式下使用模板引擎的方法
Sep 25 PHP
PHP测试成功的邮件发送案例
Oct 26 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
Nov 10 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
Dec 19 PHP
php 二维数组时间排序实现代码
Nov 19 PHP
PHP正则匹配到2个字符串之间的内容方法
Dec 24 PHP
laravel Model 执行事务的实现
Oct 10 PHP
PHP后门隐藏的一些技巧总结
Nov 04 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实现将HTML5中Canvas图像保存到服务器的方法
2014/11/28 PHP
使用PHP和JavaScript判断请求是否来自微信内浏览器
2015/08/18 PHP
PHP+MySQL实现的简单投票系统实例
2016/02/24 PHP
PHP开发APP端微信支付功能
2017/02/17 PHP
PHP给前端返回一个JSON对象的实例讲解
2018/05/31 PHP
启用OPCache提高PHP程序性能的方法
2019/03/21 PHP
不使用中间变量,交换int型的 a, b两个变量的值。
2010/10/29 Javascript
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
2011/02/25 Javascript
js中获取事件对象的方法小结
2011/03/13 Javascript
JavaScript 5 新增 Array 方法实现介绍
2012/02/06 Javascript
js open() 与showModalDialog()方法使用介绍
2013/09/10 Javascript
JQuery中$.ajax()方法参数详解及应用
2013/12/12 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
深入理解javascript的执行顺序
2014/04/04 Javascript
jQuery实现返回顶部效果的方法
2015/05/29 Javascript
JS实现仿QQ效果的三级竖向菜单
2015/09/25 Javascript
使用JQuery 加载页面时调用JS的实现方法
2016/05/30 Javascript
微信小程序 swiper组件详解及实例代码
2016/10/25 Javascript
详解JavaScript中的六种错误类型
2017/09/21 Javascript
vue中路由参数传递可能会遇到的坑
2017/12/07 Javascript
Angular项目如何升级至Angular6步骤全纪录
2018/09/03 Javascript
python的random模块及加权随机算法的python实现方法
2017/01/04 Python
Python3 适合初学者学习的银行账户登录系统实例
2017/08/08 Python
Python tornado队列示例-一个并发web爬虫代码分享
2018/01/09 Python
Python文件常见操作实例分析【读写、遍历】
2018/12/10 Python
Python实现使用request模块下载图片demo示例
2019/05/24 Python
Python动态导入模块和反射机制详解
2020/02/18 Python
python微信公众号开发简单流程实现
2020/03/09 Python
时尚孕妇装:Ingrid & Isabel
2019/05/08 全球购物
Java中的类包括什么内容?设计时要注意哪些方面
2012/05/23 面试题
技能竞赛活动方案
2014/02/21 职场文书
企业总经理任命书
2014/06/05 职场文书
后进基层党组织整改方案
2014/10/25 职场文书
质检员岗位职责
2015/02/03 职场文书
2015教师年度思想工作总结
2015/04/30 职场文书
Oracle笔记
2021/04/05 Oracle