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 相关文章推荐
图象函数中的中文显示
Oct 09 PHP
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
May 16 PHP
Apache下禁止php文件被直接访问的解决方案
Apr 25 PHP
PHP实现事件机制的方法
Jul 10 PHP
Yii2验证器(Validator)用法分析
Jul 23 PHP
Yii2框架中日志的使用方法分析
May 22 PHP
PHP实现时间比较和时间差计算的方法示例
Jul 24 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
Aug 31 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 PHP
PHP实现图片压缩
Sep 09 PHP
laravel 5.5 关闭token的3种实现方式
Oct 24 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
Aug 17 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 jQuery表单,带验证具体实现方法
2014/02/15 PHP
php轻松实现中英文混排字符串截取
2014/05/28 PHP
windows中为php安装mongodb与memcache
2015/01/06 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
2015/03/13 PHP
php禁用cookie后session设置方法分析
2016/10/19 PHP
php微信公众号开发之微信企业付款给个人
2018/10/04 PHP
基于JQuery的一句代码实现表格的简单筛选
2010/07/26 Javascript
jquery一般方法介绍 入门参考
2011/06/21 Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
2014/08/14 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
2015/08/08 Javascript
第一次接触神奇的Bootstrap表单
2016/07/27 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
2016/10/11 Javascript
jquery实现input框获取焦点的简单实例
2017/01/26 Javascript
Javascript面试经典套路reduce函数查重
2017/03/23 Javascript
react-native中ListView组件点击跳转的方法示例
2017/09/30 Javascript
vue中路由验证和相应拦截的使用详解
2017/12/13 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
element-ui的回调函数Events的用法详解
2018/10/16 Javascript
JavaScript 截取字符串代码实例
2019/09/05 Javascript
VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析
2019/12/02 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
vue 弹出遮罩层样式实例
2020/07/22 Javascript
微信小程序换肤功能实现代码(思路详解)
2020/08/25 Javascript
在Python中进行自动化单元测试的教程
2015/04/15 Python
python从网络读取图片并直接进行处理的方法
2015/05/22 Python
使用python批量读取word文档并整理关键信息到excel表格的实例
2018/11/07 Python
互动出版网:专业书籍
2017/03/21 全球购物
Fossil德国官网:化石手表、手袋、珠宝及配件
2019/12/07 全球购物
大学系主任推荐信范文
2013/12/24 职场文书
大学生职业生涯设计书
2014/01/02 职场文书
办公室主任岗位职责
2015/01/31 职场文书
2015年五四青年节活动总结
2015/02/10 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书
小平小道观后感
2015/06/09 职场文书
python实现进度条的多种实现
2021/04/29 Python
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
2021/05/25 Python