laravel利用中间件做防非法登录和权限控制示例


Posted in PHP onOctober 21, 2019

laravel框架的中间件非常好用,使得我们的防非法和rbac可以简单快速的实现

中间件就是控制路由的访问,进行分类并统一管理

1、首先我们打开artisan输入下面的命令行,创建一个中间件文件

php artisan make:middleware AdminLogin

执行命令后我们会发现Middleware文件夹会多出一个AdminLogin文件

2、然后我们打开kernel.php,将这个中间件加入到路由中间件中

protected $routeMiddleware = [
    'auth' => \App\Http\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'can' => \Illuminate\Foundation\Http\Middleware\Authorize::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    'admin.login' => \App\Http\Middleware\AdminLogin::class,
  ];

可以看到我们在这个数组用一个下标为admin.login指向了这个中间节类

3、然后在路由上将这个中间件加入关联上

Route::group(['middleware' => ['web','admin.login.login']], function () {
 
  Route::get('/admin/login/login','Admin\LoginController@login');
  //登录页面
  Route::get('/admin/index/index','Admin\IndexController@index'); 
 
  //后台首页路由
 
 
});

这里一定要将登录的路由和后台路由放到一个关联中间件中,只有放到同一个中间件中,session才能共用

4、最后我们在Middleware下的AdminLogin.php中修改一下原本的代码

在这里我们做一个简单的小判断,判断一下有没有session存在,如果有的话就直接走我们现在访问的路由,如果没有session就给他重定向到登录页面

一个简单的防非法登录就可以用了

这种方法我们也可以拿来做rbac,也是建立一个中间件,进行session判断,查库中该管理员是否对有该权限访问该路由

此时您可能会用到

$route = $request->path();

他的作用就是获取到你当前访问的路由再进行判断可不可以访问

以上这篇laravel利用中间件做防非法登录和权限控制示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php实现每天自动变换随机问候语的方法
May 12 PHP
PHP创建PowerPoint2007文档的方法
Dec 10 PHP
php操作access数据库的方法详解
Feb 22 PHP
yii2简单使用less代替css示例
Mar 10 PHP
Ubuntu 16.04下安装PHP 7过程详解
Mar 28 PHP
php实现头像上传预览功能
Apr 27 PHP
PHP批量删除jQuery操作
Jul 23 PHP
PHP二维关联数组的遍历方式(实例讲解)
Oct 18 PHP
Laravel框架Request、Response及Session操作示例
May 06 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
Aug 23 PHP
php设计模式之享元模式分析【星际争霸游戏案例】
Mar 23 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
May 29 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
Oct 21 #PHP
laravel csrf排除路由,禁止,关闭指定路由的例子
Oct 21 #PHP
laravel 实现上传图片到本地和前台访问示例
Oct 21 #PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
Oct 21 #PHP
Laravel 之url参数,获取路由参数的例子
Oct 21 #PHP
关于laravel-admin ueditor 集成并解决刷新的问题
Oct 21 #PHP
laravel-admin 实现在指定的相册下添加照片
Oct 21 #PHP
You might like
第三节 定义一个类 [3]
2006/10/09 PHP
IP攻击升级,程序改进以对付新的攻击
2010/11/23 PHP
php中的静态变量的基本用法
2014/03/20 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
2016/06/12 PHP
Yii2 ActiveRecord多表关联及多表关联搜索的实现
2016/06/30 PHP
PHP如何通过带尾指针的链表实现'队列'
2020/10/22 PHP
JavaScript 基础问答三
2008/12/03 Javascript
JavaScript Cookie显示用户上次访问的时间和次数
2009/12/08 Javascript
jQuery下实现等待指定元素加载完毕(可改成纯js版)
2013/07/11 Javascript
使用jquery制作弹出框效果
2015/04/03 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
2020/12/22 Javascript
JS检测是否可以访问公网服务器功能代码
2017/06/19 Javascript
Vue项目中quill-editor带样式编辑器的使用方法
2017/08/08 Javascript
基于Bootstrap table组件实现多层表头的实例代码
2017/09/07 Javascript
获取本机IP地址的实例(JavaScript / Node.js)
2017/11/24 Javascript
Layui组件Table绑定行点击事件和获取行数据的方法
2018/08/19 Javascript
AngularJS $http post 传递参数数据的方法
2018/10/09 Javascript
微信小程序实现文字从右向左无限滚动
2020/11/18 Javascript
vue中使用v-model完成组件间的通信
2019/08/22 Javascript
vue双向绑定数据限制长度的方法
2019/11/04 Javascript
解决 window.onload 被覆盖的问题方法
2020/01/14 Javascript
[04:10]DOTA2英雄梦之声_第11期_圣堂刺客
2014/06/21 DOTA
python编程开发之类型转换convert实例分析
2015/11/13 Python
简单讲解Python中的字符串与字符串的输入输出
2016/03/13 Python
django开发之settings.py中变量的全局引用详解
2017/03/29 Python
python中WSGI是什么,Python应用WSGI详解
2017/11/24 Python
python+matplotlib绘制饼图散点图实例代码
2018/01/20 Python
记一次python 内存泄漏问题及解决过程
2018/11/29 Python
django-filter和普通查询的例子
2019/08/12 Python
python 实现快速生成连续、随机字母列表
2019/11/28 Python
Numpy将二维数组添加到空数组的实现
2019/12/05 Python
Python逐行读取文件内容的方法总结
2020/02/14 Python
伦敦剧院门票:London Theatre Direct
2018/11/21 全球购物
《秋天的雨》教学反思
2016/02/19 职场文书
Nginx中break与last的区别详析
2021/03/31 Servers
go goroutine 怎样进行错误处理
2021/07/16 Golang