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简单静态页生成过程
Mar 27 PHP
Mysql和网页显示乱码解决方法集锦
Mar 27 PHP
PHP strtok()函数的优点分析
Mar 02 PHP
PHP操作xml代码
Jun 17 PHP
php实现的获取网站备案信息查询代码(360)
Sep 23 PHP
实用的简单PHP分页集合包括使用方法
Oct 21 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
Apr 25 PHP
简单谈谈php中的unicode和utf8编码
Jun 10 PHP
以文件形式缓存php变量的方法
Jun 26 PHP
PHP实现的同步推荐操作API接口案例分析
Nov 30 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
Apr 10 PHP
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
Apr 01 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
php多层数组与对象的转换实例代码
2013/08/05 PHP
PHP 二维数组和三维数组的过滤
2016/03/16 PHP
PHP的Yii框架中View视图的使用进阶
2016/03/29 PHP
utf8的编码算法 转载
2006/12/27 Javascript
javascript jQuery $.post $.ajax用法
2008/07/09 Javascript
ext读取两种结构的xml的代码
2008/11/05 Javascript
Javascript 复制数组实现代码
2009/11/26 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
浏览器页面区域大小的js获取方法
2013/09/21 Javascript
JavaScript实现查找字符串中第一个不重复的字符
2014/12/29 Javascript
8个超实用的jQuery功能代码分享
2015/01/08 Javascript
jQuery实现渐变弹出层和弹出菜单的方法
2015/02/20 Javascript
jQuery通过扩展实现抖动效果的方法
2015/03/11 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
2020/04/20 Javascript
js继承实现方法详解
2016/12/16 Javascript
js实现复选框的全选和取消全选效果
2017/01/03 Javascript
JS实现获取word文档内容并输出显示到html页面示例
2018/06/23 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
策略模式实现 Vue 动态表单验证的方法
2019/09/16 Javascript
Vue-Cli项目优化操作的实现
2019/10/27 Javascript
[01:28:43]2014 DOTA2华西杯精英邀请赛5 24 DK VS CIS
2014/05/25 DOTA
[00:59]DOTA2荣耀之路1:Doom is back!weapon X!
2018/05/22 DOTA
Python中利用函数装饰器实现备忘功能
2015/03/30 Python
Python pygorithm模块用法示例【常见算法测试】
2018/08/16 Python
Python元组知识点总结
2019/02/18 Python
Python 实现Image和Ndarray互相转换
2020/02/19 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
2021/01/09 Python
使用html5 canvas绘制圆环动效
2019/06/03 HTML / CSS
Levi’s美国官网:美国著名的牛仔裤品牌
2016/08/19 全球购物
意大利网上药房:Farmacia 33
2020/01/27 全球购物
乌克兰的第一家手表店:Deka
2020/03/05 全球购物
愚人节活动策划方案
2014/03/11 职场文书
总经理秘书岗位职责
2014/03/17 职场文书
产品推广策划方案
2014/05/10 职场文书
大学新闻系求职信
2014/06/03 职场文书
2015年公司后勤管理工作总结
2015/05/13 职场文书