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 相关文章推荐
怎么样可以把 phpinfo()屏蔽掉?
Nov 24 PHP
PHP字符串处理的10个简单方法
Jun 30 PHP
php excel类 phpExcel使用方法介绍
Aug 21 PHP
PHP中设置时区方法小结
Jun 03 PHP
destoon常用的安全设置概述
Jun 21 PHP
PHP函数http_build_query使用详解
Aug 20 PHP
php采集中国代理服务器网的方法
Jun 16 PHP
php生成固定长度纯数字编码的方法
Jul 09 PHP
PHP中addcslashes与stripcslashes函数用法分析
Jan 07 PHP
php使用ffmpeg获取视频信息并截图的实现方法
May 03 PHP
php使用PDO获取结果集的方法
Feb 16 PHP
浅析PHP类的反射来实现依赖注入过程
Feb 06 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中用文本文件做数据库的实现方法
2008/03/27 PHP
php调用C代码的实现方法
2014/03/11 PHP
10个简化PHP开发的工具
2014/12/25 PHP
php去除头尾空格的2种方法
2015/03/16 PHP
Yii rules常用规则示例
2016/03/15 PHP
PHP手机号中间四位用星号*代替显示的实例
2017/06/02 PHP
根据出生日期自动取得星座的js代码
2010/07/20 Javascript
在Mac OS下使用Node.js的简单教程
2015/06/24 Javascript
jQuery1.9.1源码分析系列(十六)ajax之ajax框架
2015/12/04 Javascript
js 动态给元素添加、移除事件的实现方法
2016/07/19 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
2017/02/14 Javascript
jQuery动态产生select option下拉列表
2017/03/15 Javascript
vue配置请求本地json数据的方法
2018/04/11 Javascript
JS实现计算小于非负数n的素数的数量算法示例
2019/02/26 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
2020/01/20 Javascript
Python 内置函数memoryview(obj)的具体用法
2017/11/23 Python
Win10下Python3.7.3安装教程图解
2019/07/08 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
2019/10/30 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
2020/04/13 Python
使用keras实现BiLSTM+CNN+CRF文字标记NER
2020/06/29 Python
基于Python的一个自动录入表格的小程序
2020/08/05 Python
Python列表嵌套常见坑点及解决方案
2020/09/30 Python
python实现录制全屏和选择区域录屏功能
2021/02/05 Python
利用canvas实现图片下载功能来实现浏览器兼容问题
2019/05/31 HTML / CSS
Kipling凯浦林美国官网:世界著名时尚休闲包袋品牌
2016/08/24 全球购物
80年代复古T恤:TruffleShuffle
2018/07/02 全球购物
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
大学生专科毕业生自我评价
2013/11/17 职场文书
文明青少年标兵事迹材料
2014/01/28 职场文书
社区国庆节活动方案
2014/02/05 职场文书
党员学习正风肃纪思想汇报
2014/09/12 职场文书
党小组考察意见
2015/06/02 职场文书
如何书写邀请函?
2019/06/24 职场文书
Golang二维数组的使用方式
2021/05/28 Golang
nginx配置之并发频次限制
2022/04/18 Servers
html网页引入svg图片的4种方式
2022/08/05 HTML / CSS