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连接Oracle数据库
Oct 09 PHP
PHP里的中文变量说明
Jul 23 PHP
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
Jun 03 PHP
用mysql_fetch_array()获取当前行数据的方法详解
Jun 05 PHP
PHP三元运算的2种写法代码实例
May 12 PHP
重新认识php array_merge函数
Aug 31 PHP
php截取字符串函数分享
Feb 02 PHP
php多次include后导致全局变量global失效的解决方法
Feb 28 PHP
php版阿里大于(阿里大鱼)短信发送实例详解
Nov 30 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
Jun 13 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
Oct 25 PHP
laravel框架中间件简单使用方法示例
Jan 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
基于PHP array数组的教程详解
2013/06/05 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
mac pecl 安装php7.1扩展教程
2019/10/17 PHP
DLL+ ActiveX控件+WEB页面调用例子
2010/08/07 Javascript
js 幻灯片的实现
2011/12/06 Javascript
jQuery-Tools-overlay 使用介绍
2012/07/14 Javascript
使用js实现按钮控制文本框加1减1应用于小时+分钟
2013/12/09 Javascript
jquery 新建的元素事件绑定问题解决方案
2014/06/12 Javascript
jQuery入门介绍之基础知识
2015/01/13 Javascript
JavaScript获取网页支持表单字符集的方法
2015/04/02 Javascript
Javascript实现网络监测的方法
2015/07/31 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之主动触发事件和模拟冒泡处理
2015/11/24 Javascript
深入理解jQuery中的事件冒泡
2016/05/24 Javascript
js自定义弹框插件的封装
2020/08/24 Javascript
angular.extend方法的具体使用
2017/09/14 Javascript
Angular2实现组件交互的方法分析
2017/12/19 Javascript
微信小程序之下拉列表实现方法解析(附完整源码)
2019/08/23 Javascript
jQuery操作事件完整实例分析
2020/01/10 jQuery
JavaScript实现简单计算器
2020/03/19 Javascript
PyMongo安装使用笔记
2015/04/27 Python
Python学习小技巧之列表项的拼接
2017/05/20 Python
python编写朴素贝叶斯用于文本分类
2017/12/21 Python
Django权限机制实现代码详解
2018/02/05 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
2018/08/16 Python
在PyCharm下使用 ipython 交互式编程的方法
2019/01/17 Python
Python内置random模块生成随机数的方法
2019/05/31 Python
如何利用Anaconda配置简单的Python环境
2019/06/24 Python
Python 仅获取响应头, 不获取实体的实例
2019/08/21 Python
Pycharm创建项目时如何自动添加头部信息
2019/11/14 Python
法国购买隐形眼镜和眼镜网站:Optical Center
2019/10/08 全球购物
俄语专业毕业生推荐信
2013/10/28 职场文书
出纳工作岗位责任制
2014/02/02 职场文书
活动策划求职信模板
2014/04/21 职场文书
MySQL 使用SQL语句修改表名的实现
2021/04/07 MySQL
Python实现单例模式的5种方法
2021/06/15 Python