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 相关文章推荐
ThinkPHP3.1数据CURD操作快速入门
Jun 19 PHP
php验证session无效的解决方法
Nov 04 PHP
php计算整个目录大小的方法
Jun 19 PHP
php类自动加载器实现方法
Jul 28 PHP
PHP引用的调用方法分析
Apr 25 PHP
PHP magento后台无法登录问题解决方法
Nov 24 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
May 05 PHP
php更新cookie内容的详细方法
Sep 30 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
Oct 11 PHP
PHP array_reverse() 函数原理及实例解析
Jul 14 PHP
2020最新版 PhpStudy V8.1版本下载安装使用详解
Oct 30 PHP
浅谈如何提高PHP代码的质量
May 28 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
全国FM电台频率大全 - 13 福建省
2020/03/11 无线电
php静态文件生成类实例分析
2015/01/03 PHP
php实现的http请求封装示例
2016/11/08 PHP
Input 特殊事件onpopertychange和oninput
2009/06/17 Javascript
js生成随机数的过程解析
2015/11/24 Javascript
JS实现图片的不间断连续滚动的简单实例
2016/06/03 Javascript
jQuery使用deferreds串行多个ajax请求
2016/08/22 Javascript
JS继承之借用构造函数继承和组合继承
2016/09/07 Javascript
基于原生js淡入淡出函数封装(兼容IE)
2016/10/20 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
Bootstrap CSS组件之面包屑导航(breadcrumb)
2016/12/17 Javascript
JavaScript 中 apply 、call 的详解
2017/03/21 Javascript
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
AngularJS实现的JSONP跨域访问数据传输功能详解
2017/07/20 Javascript
jQuery实现切换隐藏与显示同时切换图标功能
2017/10/29 jQuery
js实现登录与注册界面
2017/11/01 Javascript
微信小程序实现选项卡功能
2020/06/19 Javascript
Vue组件化开发思考
2018/02/02 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
vue 的 solt 子组件过滤过程解析
2019/09/07 Javascript
[07:12]2014DOTA2西雅图国际邀请赛 黑马Liquid专题采访
2014/07/12 DOTA
mac 安装python网络请求包requests方法
2018/06/13 Python
windows下pycharm安装、创建文件、配置默认模板
2018/07/31 Python
详解pandas安装若干异常及解决方案总结
2019/01/10 Python
python修改字典键(key)的方法
2019/08/05 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
Pytorch基本变量类型FloatTensor与Variable用法
2020/01/08 Python
django使用graphql的实例
2020/09/02 Python
AmazeUI 加载进度条的实现示例
2020/08/20 HTML / CSS
中专生自我鉴定
2013/12/17 职场文书
中职生求职信
2014/07/01 职场文书
考试作弊检讨书
2014/10/21 职场文书
资料员岗位职责范本
2015/04/13 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js
了解Redis常见应用场景
2021/06/23 Redis
Java 超详细讲解数据结构中的堆的应用
2022/04/02 Java/Android