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 echo 输出字符串函数详解
May 13 PHP
检测png图片是否完整的php代码
Sep 06 PHP
PHP文章按日期(月日)SQL归档语句
Nov 29 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
Jan 30 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
Oct 30 PHP
php使用Imagick生成图片的方法
Jul 31 PHP
WordPress中使主题支持小工具以及添加插件启用函数
Dec 22 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
Sep 30 PHP
利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
Oct 31 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
Dec 15 PHP
php使用环形链表解决约瑟夫问题完整示例
Aug 07 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
Apr 10 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
用windows下编译过的eAccelerator for PHP 5.1.6实现php加速的使用方法
2007/09/30 PHP
Laravel 的数据库迁移的方法
2017/07/31 PHP
CI框架实现创建自定义类库的方法
2018/12/25 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
图片连续滚动代码[兼容IE/firefox]
2009/06/11 Javascript
可以将word转成html的js代码
2010/04/11 Javascript
JavaScript常用对象的方法和属性小结
2012/01/24 Javascript
JavaScript中的eval()函数详解
2013/08/22 Javascript
招聘网站基于jQuery实现自动刷新简历
2015/05/10 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
2015/10/01 Javascript
js html5 css俄罗斯方块游戏再现
2016/10/17 Javascript
原生JS实现图片左右轮播
2016/12/30 Javascript
Bootstrap导航简单实现代码
2017/03/06 Javascript
ES6新数据结构Set与WeakSet用法分析
2017/03/31 Javascript
jquery拖动改变div大小
2017/07/04 jQuery
微信小程序获取循环元素id以及wx.login登录操作
2017/08/17 Javascript
详解基于Vue,Nginx的前后端不分离部署教程
2018/12/04 Javascript
Angular4.0动画操作实例详解
2019/05/10 Javascript
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
js实现直播点击飘心效果
2020/08/19 Javascript
vue表单验证之禁止input输入框输入空格
2020/12/03 Vue.js
[02:44]重置世界,颠覆未来——DOTA2 7.23版本震撼上线
2019/12/01 DOTA
[49:15]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第二场 1月19日
2021/03/11 DOTA
Python中强大的命令行库click入门教程
2016/12/26 Python
python交互式图形编程实例(三)
2017/11/17 Python
Python冲顶大会 快来答题!
2018/01/17 Python
Python使用itertools模块实现排列组合功能示例
2018/07/02 Python
使用tensorflow实现线性回归
2018/09/08 Python
对python GUI实现完美进度条的示例详解
2018/12/13 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
2019/08/12 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
校园环保建议书
2014/05/14 职场文书
工作作风建设心得体会
2014/10/22 职场文书
2014年企业工会工作总结
2014/11/12 职场文书
2014小学一年级班主任工作总结
2014/12/05 职场文书