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 面向对象程序设计
Feb 13 PHP
PHP 错误之引号中使用变量
May 04 PHP
PHP下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
Sep 19 PHP
ThinkPHP空模块和空操作详解
Jun 30 PHP
PHP使用xmllint命令处理xml与html的方法
Dec 15 PHP
PHP实现微信发红包程序
Aug 24 PHP
从刷票了解获得客户端IP的方法
Sep 21 PHP
PHP连接MYSQL数据库实例代码
Jan 20 PHP
php实现在站点里面添加邮件发送的功能
Apr 28 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
Feb 04 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
Yii框架函数简单用法分析
Sep 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
PHP编码规范之注释和文件结构说明
2010/07/09 PHP
php 读取文件夹下所有图片、文件的实例
2018/10/17 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
2013/06/06 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
js实现进度条的方法
2015/02/13 Javascript
jQuery插件简单实现方法
2015/07/18 Javascript
JS实现网页Div层Clone拖拽效果
2015/09/26 Javascript
js流动式效果显示当前系统时间
2016/05/16 Javascript
AngularJS入门之动画
2016/07/27 Javascript
vue和webpack打包项目相对路径修改的方法
2018/06/15 Javascript
详解使用mpvue开发github小程序总结
2018/07/25 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
2019/01/18 jQuery
nodejs分离html文件里面的js和css的方法
2019/04/09 NodeJs
JS+DIV实现拖动效果
2020/02/11 Javascript
如何配置vue.config.js 处理static文件夹下的静态文件
2020/06/19 Javascript
python实现数值积分的Simpson方法实例分析
2015/06/05 Python
python 网络编程详解及简单实例
2017/04/25 Python
numpy.random.seed()的使用实例解析
2018/02/03 Python
Python unittest模块用法实例分析
2018/05/25 Python
Pandas:DataFrame对象的基础操作方法
2018/06/07 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
2018/08/16 Python
Pandas GroupBy对象 索引与迭代方法
2018/11/16 Python
CSS3教程(2):网页边框半径和网页圆角
2009/04/02 HTML / CSS
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
荷兰和比利时时尚鞋店:Van Dalen
2018/04/23 全球购物
女装和独特珠宝:Sundance Catalog
2018/09/19 全球购物
教师自我鉴定范文
2013/11/10 职场文书
自我评价格式
2014/01/06 职场文书
经典导游欢迎词大全
2014/01/16 职场文书
乡镇群众路线教育实践活动整改措施
2014/10/04 职场文书
三严三实学习心得体会
2014/10/13 职场文书
亚布力滑雪场导游词
2015/02/09 职场文书
结婚喜宴迎宾词
2015/08/10 职场文书
穷人该怎么创业?谨记以下几点
2019/07/11 职场文书