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代码包装修正版
Mar 15 PHP
php 小乘法表实现代码
Jul 16 PHP
PHP stream_context_create()作用和用法分析
Mar 29 PHP
php分页代码学习示例分享
Feb 20 PHP
thinkphp3.0输出重复两次的解决方法
Dec 19 PHP
PHP中ajax无刷新上传图片与图片下载功能
Feb 21 PHP
Yii1.1框架实现PHP极光推送消息通知功能
Sep 06 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
Mar 11 PHP
php curl操作API接口类完整示例
May 21 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
Oct 09 PHP
php+mysql实现的无限分类方法类定义与使用示例
May 27 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
Mar 09 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
IIS6.0中配置php服务全过程解析
2013/08/07 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
2015/10/20 PHP
Yii框架中jquery表单验证插件用法示例
2016/10/18 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
一个简单的javascript类定义例子
2009/09/12 Javascript
JQuery Tab选项卡效果代码改进版
2010/04/01 Javascript
解析DHTML,JavaScript,DOM,BOM以及WEB标准的描述
2013/06/19 Javascript
jquery手风琴特效插件
2015/02/04 Javascript
AngularJS包括详解及示例代码
2016/08/17 Javascript
Jquery组件easyUi实现表单验证示例
2016/08/23 Javascript
jquery 删除节点 添加节点 找兄弟节点的简单实现
2016/12/07 Javascript
web 屏蔽BackSpace键实例代码
2016/12/24 Javascript
JavaScript的for循环中嵌套一个点击事件的问题解决
2017/03/03 Javascript
package.json文件配置详解
2017/06/15 Javascript
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
JavaScript迭代器的含义及用法
2019/06/21 Javascript
js实现点赞效果
2020/03/16 Javascript
vue实现商品列表的添加删除实例讲解
2020/05/14 Javascript
[50:15]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Python实现抓取页面上链接的简单爬虫分享
2015/01/21 Python
在Django的模型中添加自定义方法的示例
2015/07/21 Python
Django Admin实现上传图片校验功能
2016/03/06 Python
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
Python基于回溯法子集树模板解决野人与传教士问题示例
2017/09/11 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
2018/05/05 Python
python http基本验证方法
2018/12/26 Python
python代码 FTP备份交换机配置脚本实例解析
2019/08/01 Python
Python实现七个基本算法的实例代码
2020/10/08 Python
HTML5实现页面切换激活的PageVisibility API使用初探
2016/05/13 HTML / CSS
台湾网购生鲜第一品牌:i3Fresh爱上新鲜
2017/10/26 全球购物
请说出几个常用的异常类
2013/01/08 面试题
高中毕业自我鉴定
2013/12/13 职场文书
计算机专业优秀大学生自我总结
2014/01/21 职场文书
党员对照检查材料
2014/09/22 职场文书
2014幼儿园教育教学工作总结
2014/12/17 职场文书
AndroidStudio图片压缩工具ImgCompressPlugin使用实例
2022/08/05 Java/Android