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中的数组操作函数整理
Aug 18 PHP
将数组写入txt文件 var_export
Apr 21 PHP
又一个php 分页类实现代码
Dec 03 PHP
php数组中删除元素的实现代码
Jun 22 PHP
php中利用str_pad函数生成数字递增形式的产品编号
Sep 30 PHP
php上传文件问题汇总
Jan 30 PHP
php生成zip文件类实例
Apr 07 PHP
ThinkPHP函数详解之M方法和R方法
Sep 10 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
Oct 08 PHP
Yii2隐藏frontend/web和backend/web的方法
Dec 12 PHP
thinkphp5使html5实现动态跳转的例子
Oct 16 PHP
php 使用expat方式解析xml文件操作示例
Nov 26 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许愿墙模块功能分析
2013/06/25 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
2015/07/06 PHP
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
2016/12/09 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
JavaScript 中的日期和时间及表示标准介绍
2013/08/21 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
2014/01/02 Javascript
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
EasyUI学习之DataGird分页显示数据
2016/12/29 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
说说Vuex的getters属性的具体用法
2019/04/15 Javascript
亲自动手实现vue日历控件
2019/06/26 Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
2019/08/09 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
vue实现百度语音合成的实例讲解
2019/10/14 Javascript
Openlayers+EasyUI Tree动态实现图层控制
2020/09/28 Javascript
python复制文件代码实现
2013/12/23 Python
详解Python中列表和元祖的使用方法
2015/04/25 Python
Python字典简介以及用法详解
2016/11/15 Python
Python探索之修改Python搜索路径
2017/10/25 Python
JupyterNotebook设置Python环境的方法步骤
2019/12/03 Python
Python3.6 中的pyinstaller安装和使用教程
2020/03/16 Python
OpenCV 表盘指针自动读数的示例代码
2020/04/10 Python
服务器端jupyter notebook映射到本地浏览器的操作
2020/04/14 Python
Python如何实现线程间通信
2020/07/30 Python
Python 使用Opencv实现目标检测与识别的示例代码
2020/09/08 Python
python Scrapy框架原理解析
2021/01/04 Python
自我鉴定200字
2013/10/28 职场文书
追悼会子女答谢词
2014/01/28 职场文书
美国探亲签证邀请信
2014/02/05 职场文书
师范教师专业大学生职业生涯规划范文
2014/03/02 职场文书
协议书怎么写
2014/04/21 职场文书
主题党日活动总结
2014/07/08 职场文书
初中政治教师教学反思
2016/02/23 职场文书
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python
Vue3.0 手写放大镜效果
2021/07/25 Vue.js