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 htmlspecialchars加强版
Feb 16 PHP
php空间不支持socket但支持curl时recaptcha的用法
Nov 07 PHP
浅析php中抽象类和接口的概念以及区别
Jun 27 PHP
PHP的PSR规范中文版
Sep 28 PHP
使用openssl实现rsa非对称加密算法示例
Jan 24 PHP
Zend Studio使用技巧两则
Apr 01 PHP
PHP基于XMLWriter操作xml的方法分析
Jul 17 PHP
PHP获取MySQL执行sql语句的查询时间方法
Aug 21 PHP
PHP实现的XXTEA加密解密算法示例
Aug 28 PHP
CI框架附属类用法分析
Dec 26 PHP
在laravel-admin中列表中禁止某行编辑、删除的方法
Oct 03 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
Apr 04 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
提取HTML标签
2006/10/09 PHP
一家之言的经验之谈php+mysql扎实个人基本功
2008/03/27 PHP
PHP中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
PHP中使用CURL模拟登录并获取数据实例
2014/07/01 PHP
PHP图形操作之Jpgraph学习笔记
2015/12/25 PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
2017/05/04 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
Convert Seconds To Hours
2007/06/16 Javascript
jQuery 使用手册(一)
2009/09/23 Javascript
javascript ready和load事件的区别示例介绍
2013/08/30 Javascript
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
jQuery实现给页面换肤的方法
2015/05/30 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
2017/02/12 Javascript
vue购物车插件编写代码
2017/11/27 Javascript
微信小程序scroll-view组件实现滚动动画
2018/01/31 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
了解在JavaScript中将值转换为字符串的5种方法
2019/06/06 Javascript
微信小程序实现时间戳格式转换
2020/07/20 Javascript
JS倒计时两种实现方式代码实例
2020/07/27 Javascript
为python设置socket代理的方法
2015/01/14 Python
Python文件操作,open读写文件,追加文本内容实例
2016/12/14 Python
Python实现的双色球生成功能示例
2017/12/18 Python
Python实现的knn算法示例
2018/06/14 Python
pycharm通过anaconda安装pyqt5的教程
2020/03/24 Python
django models里数据表插入数据id自增操作
2020/07/15 Python
详解python实现可视化的MD5、sha256哈希加密小工具
2020/09/14 Python
Python 远程开关机的方法
2020/11/18 Python
纯CSS3发光分享按钮的实现教程
2014/09/06 HTML / CSS
捷克家具销售网站:SCONTO Nábytek
2020/01/02 全球购物
防沙治沙典型材料
2014/05/07 职场文书
关于学习的演讲稿
2014/05/10 职场文书
装饰工程师岗位职责
2014/06/08 职场文书
2016年秋季运动会通讯稿
2015/11/25 职场文书
Pytorch 实现变量类型转换
2021/05/17 Python
Go本地测试解耦任务拆解及沟通详解Go本地测试的思路沟通的重要性总结
2022/06/21 Golang