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网上调查系统
Oct 09 PHP
Cakephp 执行主要流程
Mar 24 PHP
php 判断访客是否为搜索引擎蜘蛛的函数代码
Jul 29 PHP
php 文件上传实例代码
Apr 19 PHP
PHP获取MSN好友列表类的实现代码
Jun 23 PHP
php preg_replace替换实例讲解
Nov 04 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
Apr 02 PHP
PHP中spl_autoload_register()函数用法实例详解
Jul 18 PHP
thinkPHP中钩子的两种配置调用方法详解
Nov 11 PHP
php加密之discuz内容经典加密方式实例详解
Feb 04 PHP
php判断电子邮件是否正确方法
Dec 04 PHP
php实现大文件断点续传下载实例代码
Oct 01 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游戏编程25个脚本代码
2011/02/08 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
2013/06/24 PHP
php中3种方法删除字符串中间的空格
2014/03/10 PHP
让插入到 innerHTML 中的 script 跑起来的实现代码
2006/07/01 Javascript
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
javascript 动态参数判空操作
2008/12/22 Javascript
利用onresize使得div可以随着屏幕大小而自适应的代码
2010/01/15 Javascript
js substring从右边获取指定长度字符串(示例代码)
2013/12/23 Javascript
超简单JS二级、多级联动的简单实例
2014/02/18 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
JavaScript中的alert()函数使用技巧详解
2014/12/29 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
2017/03/13 Javascript
关于meta viewport中target-densitydpi属性详解(推荐)
2017/08/18 Javascript
layui 表格的属性的显示转换方法
2018/08/14 Javascript
[10:28]2018DOTA2国际邀请赛寻真——VGJ.S寻梦之路
2018/08/15 DOTA
[40:03]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
[02:03]完美世界DOTA2联赛10月30日赛事集锦
2020/10/31 DOTA
Python实现时钟显示效果思路详解
2018/04/11 Python
这可能是最好玩的python GUI入门实例(推荐)
2019/07/19 Python
Python 迭代,for...in遍历,迭代原理与应用示例
2019/10/12 Python
python 遗传算法求函数极值的实现代码
2020/02/11 Python
python中wx模块的具体使用方法
2020/05/15 Python
python判断变量是否为列表的方法
2020/09/17 Python
用python读取xlsx文件
2020/12/17 Python
Python爬虫分析微博热搜关键词的实现代码
2021/02/22 Python
HTML5录音实践总结(Preact)
2020/05/07 HTML / CSS
香港通票:Hong Kong Pass
2019/02/26 全球购物
日常奢侈品,轻松购物:Verishop
2019/08/20 全球购物
物业管理毕业生的自我评价
2014/02/17 职场文书
《歌唱二小放牛郎》教学反思
2014/04/19 职场文书
保护水资源的标语
2014/06/17 职场文书
六查六看剖析材料
2014/10/06 职场文书
防火标语大全
2014/10/06 职场文书
教师个人培训总结
2015/02/11 职场文书
美术教师求职信范文
2015/03/20 职场文书
办公用品管理制度
2015/08/04 职场文书