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 和 MySQL 基础教程(二)
Oct 09 PHP
php中的一个中文字符串截取函数
Feb 14 PHP
Phpbean路由转发的php代码
Jan 10 PHP
php array_map array_multisort 高效处理多维数组排序
Jun 11 PHP
Ha0k 0.3 PHP 网页木马修改版
Oct 11 PHP
让Json更懂中文(JSON_UNESCAPED_UNICODE)
Oct 27 PHP
php批量上传的实现代码
Jun 09 PHP
php无限分类且支持输出树状图的详细介绍
Jun 19 PHP
thinkphp的CURD和查询方式介绍
Dec 19 PHP
php实现telnet功能示例
Apr 08 PHP
php实现的数字验证码及数字运算验证码
Jul 30 PHP
php7 新增功能实例总结
May 25 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
肝肠寸断了解下!盘点史上最伤心的十大动漫
2020/03/04 日漫
php jquery 实现新闻标签分类与无刷新分页
2009/12/18 PHP
零基础php编程好学吗
2019/10/11 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
2020/08/17 PHP
javascript来定义类的规范小结
2010/11/19 Javascript
jQuery点击自身以外地方关闭弹出层的简单实例
2013/12/24 Javascript
一个简单的Node.js异步操作管理器分享
2014/04/29 Javascript
javascript 获取浏览器版本
2015/01/21 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
2015/09/14 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
JS实现的表格行上下移动操作示例
2016/08/03 Javascript
JS ES6多行字符串与连接字符串的表示方法
2017/04/26 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
2017/12/15 Javascript
vue.js 中使用(...)运算符报错的解决方法
2018/08/09 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
通过jQuery学习js类型判断的技巧
2019/05/27 jQuery
javascript function(函数类型)使用与注意事项小结
2019/06/10 Javascript
小程序实现tab标签页
2020/11/16 Javascript
py中的目录与文件判别代码
2008/07/16 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
2019/06/21 Python
Pycharm+Python+PyQt5使用详解
2019/09/25 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
django 数据库返回queryset实现封装为字典
2020/05/19 Python
python中导入 train_test_split提示错误的解决
2020/06/19 Python
Python面向对象实现方法总结
2020/08/12 Python
美国经典刺绣和字母儿童服装特卖:Smocked Auctions
2018/07/16 全球购物
国培教师自我鉴定
2014/02/12 职场文书
大学生党员批评与自我批评范文
2014/10/14 职场文书
自查自纠整改报告
2014/11/06 职场文书
论群众路线学习笔记
2014/11/06 职场文书
2016年寒假学习心得体会
2015/10/09 职场文书
Pycharm 如何设置HTML文件自动补全代码或标签
2021/05/21 Python
JS数组去重详情
2021/11/07 Javascript
Nginx配置根据url参数重定向
2022/04/11 Servers
python井字棋游戏实现人机对战
2022/04/28 Python