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 相关文章推荐
php5新改动之短标记启用方法
Sep 11 PHP
php URL编码解码函数代码
Mar 10 PHP
ajax php 实现写入数据库
Sep 02 PHP
PHP系统命令函数使用分析
Jul 05 PHP
php输出1000以内质数(素数)示例
Feb 16 PHP
php从memcache读取数据再批量写入mysql的方法
Dec 29 PHP
thinkPHP线上自动加载异常与修复方法实例分析
Dec 01 PHP
谈谈php对接芝麻信用踩的坑
Dec 01 PHP
PHP单例模式简单用法示例
Jun 23 PHP
PHP基于GD库实现的生成图片缩略图函数示例
Jul 05 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
Sep 26 PHP
PHP执行普通shell命令流程解析
Aug 24 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 命名空间实例说明
2011/01/27 PHP
php实现的数字验证码及数字运算验证码
2015/07/30 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
2020/05/27 PHP
JS效率个人经验谈(8-15更新),加入range技巧
2007/01/09 Javascript
innertext , insertadjacentelement , insertadjacenthtml , insertadjacenttext 等区别
2007/06/29 Javascript
JavaScript访问样式表代码
2010/10/15 Javascript
js编码、解码函数介绍及其使用示例
2013/09/05 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
js 基础篇必看(点击事件轮播图的简单实现)
2016/08/20 Javascript
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
利用JS实现一个同Excel表现的智能填充算法
2018/08/13 Javascript
详解VUE里子组件如何获取父组件动态变化的值
2018/12/26 Javascript
微信小程序3D轮播实现代码
2019/09/19 Javascript
JavaScript常用进制转换及位运算实例解析
2020/10/14 Javascript
Python从MP3文件获取id3的方法
2015/06/15 Python
使用Python编写简单的画图板程序的示例教程
2015/12/08 Python
tensorflow中next_batch的具体使用
2018/02/02 Python
python 列表输出重复值以及对应的角标方法
2019/06/11 Python
Python 使用多属性来进行排序
2019/09/01 Python
Python代理IP爬虫的新手使用教程
2019/09/05 Python
Python类反射机制使用实例解析
2019/12/30 Python
python计算二维矩形IOU实例
2020/01/18 Python
django 连接数据库出现1045错误的解决方式
2020/05/14 Python
Python2手动安装更新pip过程实例解析
2020/07/16 Python
python包的导入方式总结
2021/03/02 Python
CSS3制作气泡对话框的实例教程
2016/05/10 HTML / CSS
会计电算化学生个人的自我评价
2014/02/08 职场文书
实习会计求职自荐信范文
2014/03/10 职场文书
《骑牛比赛》教后反思
2014/04/22 职场文书
经济管理自荐书
2014/06/09 职场文书
我的中国心演讲稿
2014/09/04 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
陪护人员误工证明
2015/06/24 职场文书
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL
Mysql中存储引擎的区别及比较
2021/06/04 MySQL
mongoDB数据库索引快速入门指南
2022/03/23 MongoDB