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 相关文章推荐
改进的IP计数器
Oct 09 PHP
PHP文件注释标记及规范小结
Apr 01 PHP
PHP5中GD库生成图形验证码(有汉字)
Jul 28 PHP
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
Apr 24 PHP
使用PHP实现阻止用户上传成人照片或者裸照
Dec 25 PHP
php延迟静态绑定实例分析
Feb 08 PHP
10款实用的PHP开源工具
Oct 23 PHP
yum命令安装php7和相关扩展
Jul 04 PHP
php 实现301重定向跳转实例代码
Jul 18 PHP
一个非常实用的php文件上传类
Jul 04 PHP
PHP进阶学习之Geo的地图定位算法详解
Jun 19 PHP
tp5递归 无限级分类详解
Oct 18 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 strtr() 函数使用说明
2008/11/21 PHP
php计算数组相同值出现次数的代码(array_count_values)
2015/01/20 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
eval与window.eval的差别分析
2011/03/17 Javascript
JavaScript中将一个值转换为字符串的方法分析[译]
2012/09/21 Javascript
Js动态添加复选框Checkbox的实例方法
2013/04/08 Javascript
js简单实现让文本框内容逐个字的显示出来
2013/10/22 Javascript
javascript ajax的5种状态介绍
2014/08/18 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
vue.js绑定class和style样式(6)
2016/12/09 Javascript
jquery插件bootstrapValidator表单验证详解
2016/12/15 Javascript
Javascript实现登录记住用户名和密码功能
2017/03/22 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
2020/03/08 Javascript
vue项目在webpack2实现移动端字体自适配功能
2020/06/02 Javascript
Nodejs在局域网配置https访问的实现方法
2020/10/17 NodeJs
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
[57:50]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第二局
2016/03/05 DOTA
Python中使用Boolean操作符做真值测试实例
2015/01/30 Python
简单介绍Python中的floor()方法
2015/05/15 Python
Python守护进程和脚本单例运行详解
2017/01/06 Python
Python实现的多线程http压力测试代码
2017/02/08 Python
Python内置模块turtle绘图详解
2017/12/09 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
Django中提供的6种缓存方式详解
2019/08/05 Python
python实现生成Word、docx文件的方法分析
2019/08/30 Python
PyCharm2018 安装及破解方法实现步骤
2019/09/09 Python
Python 生成短8位唯一id实战教程
2021/01/13 Python
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
荷兰演唱会和体育比赛订票网站:viagogo荷兰
2018/04/08 全球购物
一个SQL面试题
2014/08/21 面试题
建龙钢铁面试总结
2014/04/15 面试题
教育技术职业规划范文
2014/03/04 职场文书
营销总经理岗位职责范本
2014/09/02 职场文书
解放思想演讲稿
2014/09/11 职场文书
成绩报告单家长评语
2014/12/30 职场文书
社区端午节活动总结
2015/02/11 职场文书