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读取XML值的代码(推荐)
Jan 01 PHP
利用PHP实现短域名互转
Jul 05 PHP
使用php显示搜索引擎来的关键词
Feb 13 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
Apr 25 PHP
兼容PHP和Java的des加密解密代码分享
Jun 26 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
Mar 13 PHP
php调整服务器时间的方法
Apr 03 PHP
分享自定义的几个PHP功能函数
Apr 15 PHP
php实现有趣的人品测试程序实例
Jun 08 PHP
php解析url并得到url中的参数及获取url参数的四种方式
Oct 26 PHP
基于PHP实现等比压缩图片大小
Mar 04 PHP
关于php支持的协议与封装协议总结(推荐)
Nov 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
用phpmyadmin更改mysql5.0登录密码
2008/03/25 PHP
详解PHP 二维数组排序保持键名不变
2019/03/06 PHP
jQuery UI Datepicker length为空或不是对象错误的解决方法
2010/12/19 Javascript
jQuery操作 input type=checkbox的实现代码
2012/06/14 Javascript
Javascript 颜色渐变效果的实现代码
2013/10/01 Javascript
推荐 21 款优秀的高性能 Node.js 开发框架
2014/08/18 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
Nodejs初级阶段之express
2015/11/23 NodeJs
基于jQuery下拉选择框插件支持单选多选功能代码
2016/06/07 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
jsp 网站引入外部css或者js失效问题解决
2016/10/31 Javascript
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
2017/01/11 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
基于JavaScript实现类名的添加与移除
2017/04/23 Javascript
Vue异步加载about组件
2017/10/31 Javascript
Webpack实战加载SVG的方法
2017/12/26 Javascript
微信js-sdk 录音功能的示例代码
2019/11/01 Javascript
JS数组的高级使用方法示例小结
2020/03/14 Javascript
基于postman获取动态数据过程详解
2020/09/08 Javascript
[07:40]DOTA2每周TOP10 精彩击杀集锦vol.4
2014/06/25 DOTA
python 接收处理外带的参数方法
2018/12/03 Python
Python获取航线信息并且制作成图的讲解
2019/01/03 Python
PyQt4实时显示文本内容GUI的示例
2019/06/14 Python
Python Tornado批量上传图片并显示功能
2020/03/26 Python
python库skimage给灰度图像染色的方法示例
2020/04/27 Python
Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)
2020/06/14 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
2020/09/28 Python
Python爬虫教程知识点总结
2020/10/19 Python
网购亚洲时装、美容产品和生活百货:YesStyle
2016/09/15 全球购物
专科毕业生就业推荐信
2013/11/01 职场文书
保护动物的标语
2014/06/11 职场文书
2014幼儿园小班工作总结
2014/11/10 职场文书
优秀教研组申报材料
2014/12/26 职场文书
国家助学贷款承诺书
2015/04/30 职场文书
「天才王子的赤字国家重生术」妮妮姆·拉雷粘土人开订
2022/03/21 日漫
mybatis 获取更新记录的id
2022/05/20 Java/Android