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+AJAX实现无刷新注册(带用户名实时检测)
Dec 02 PHP
工厂模式在Zend Framework中应用介绍
Jul 10 PHP
解析PHP跨站刷票的实现代码
Jun 18 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
Jun 19 PHP
PHP将回调函数作用到给定数组单元的方法
Aug 19 PHP
PHPUnit安装及使用示例
Oct 29 PHP
PHP_SELF,SCRIPT_NAME,REQUEST_URI区别
Dec 24 PHP
PHP序列化/对象注入漏洞分析
Apr 18 PHP
php下载文件,添加响应头的简单实例
Sep 22 PHP
PHP读取文件的常见几种方法
Nov 03 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
Jul 18 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
Nov 23 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在线生成二维码(google api)的实现代码详解
2013/06/04 PHP
PHP判断表单复选框选中状态完整例子
2014/06/24 PHP
php找出指定范围内回文数且平方根也是回文数的方法
2015/03/23 PHP
ThinkPHP中order()使用方法详解
2016/04/19 PHP
如何解决PHP获取不到SESSION信息之一般情况
2019/10/10 PHP
让焦点自动跳转
2006/07/01 Javascript
HTML-CSS群中单选引发的“事件”
2007/03/05 Javascript
javascript错误的认识不用关心内存管理
2012/12/15 Javascript
jQuery中attr()和prop()在修改checked属性时的区别
2014/07/18 Javascript
jQuery使用元素属性attr赋值详解
2015/02/27 Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
2016/03/29 Javascript
深入理解jQuery之事件移除
2016/06/02 Javascript
ES6入门教程之Iterator与for...of循环详解
2017/05/17 Javascript
详解webpack 多入口配置
2017/06/16 Javascript
详解Vue学习笔记入门篇之组件的内容分发(slot)
2017/07/17 Javascript
JS实现带导航城市列表以及输入搜索功能
2018/01/04 Javascript
JS函数内部属性之arguments和this实例解析
2018/10/07 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
2019/08/28 Javascript
vue进入页面时不在顶部,检测滚动返回顶部按钮问题及解决方法
2019/10/30 Javascript
JavaScript中作用域链的概念及用途讲解
2020/08/06 Javascript
转换科学计数法的数值字符串为decimal类型的方法
2018/07/16 Python
python卸载后再次安装遇到的问题解决
2019/07/10 Python
详解Python中的format格式化函数的使用方法
2019/11/20 Python
Python 面向对象部分知识点小结
2020/03/09 Python
Python matplotlib模块及柱状图用法解析
2020/08/10 Python
使用canvas压缩图片大小的方法示例
2019/08/02 HTML / CSS
GNC健安喜美国官网:美国第一营养品牌
2016/07/22 全球购物
Cotton On美国网站:澳洲时装连锁品牌
2016/10/25 全球购物
美国半成品食材配送服务商:Home Chef
2018/01/25 全球购物
最便宜促销价格订机票:Airpaz(总部设在印尼,支持中文)
2018/11/13 全球购物
英国现代家具和照明购物网站:Heal’s
2019/10/30 全球购物
幼儿园保育员辞职信
2014/01/12 职场文书
违纪检讨书2000字
2014/02/08 职场文书
金融管理专业求职信
2014/07/10 职场文书
2015年采购工作总结
2015/04/10 职场文书
HTML5中 rem适配方案与 viewport 适配问题详解
2021/04/27 HTML / CSS