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 相关文章推荐
写一个用户在线显示的程序
Oct 09 PHP
php网页后退不再出现过期
Mar 08 PHP
php抓取https的内容的代码
Apr 06 PHP
数据库中排序的对比及使用条件详解
Feb 23 PHP
Apache下禁止php文件被直接访问的解决方案
Apr 25 PHP
基于PHP常用字符串的总结(待续)
Jun 07 PHP
基于PHP输出缓存(output_buffering)的深入理解
Jun 13 PHP
PHP实现的简单日历类
Nov 29 PHP
PHP生成RSS文件类实例
Dec 05 PHP
PHP版微信公众平台红包API
Apr 02 PHP
PHP中如何使用session实现保存用户登录信息
Oct 20 PHP
CI操作cookie的方法分析(基于helper类库)
Mar 28 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
星际流派综述
2020/03/04 星际争霸
一些常用的php函数
2006/12/06 PHP
默默小谈PHP&MYSQL分页原理及实现
2007/01/02 PHP
IIS6.0中配置php服务全过程解析
2013/08/07 PHP
帝国cms目录结构分享
2015/07/06 PHP
PHP面向对象学习之parent::关键字
2017/01/18 PHP
php微信公众号开发之翻页查询
2018/10/20 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
深入理解Javascript闭包 新手版
2010/12/28 Javascript
用nodejs实现PHP的print_r函数代码
2014/03/14 NodeJs
微信小程序实现顶部选项卡(swiper)
2020/06/19 Javascript
vue click.stop阻止点击事件继续传播的方法
2018/09/04 Javascript
vue-cli中vue本地实现跨域调试接口
2019/01/16 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
js点击事件的执行过程实例分析【冒泡与捕获】
2020/04/11 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
2020/08/04 Javascript
python根据出生日期返回年龄的方法
2015/03/26 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
2017/02/14 Python
Python入门之三角函数全解【收藏】
2017/11/08 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
2018/01/24 Python
Python使用Selenium爬取淘宝异步加载的数据方法
2018/12/17 Python
python之mock模块基本使用方法详解
2019/06/27 Python
numpy.random.shuffle打乱顺序函数的实现
2019/09/10 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
2020/05/20 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
Python批量获取并保存手机号归属地和运营商的示例
2020/10/09 Python
python collections模块的使用
2020/10/16 Python
洲际酒店集团大中华区:IHG中国
2016/08/17 全球购物
C语言笔试集
2012/07/24 面试题
创建索引时需要注意的事项
2013/05/13 面试题
简述网络文件系统NFS,并说明其作用
2016/10/19 面试题
Prototype如何更新局部页面
2013/03/03 面试题
传媒专业推荐信范文
2013/11/23 职场文书
求职信怎么写范文
2014/05/26 职场文书
幼儿园运动会口号
2014/06/07 职场文书
Python爬虫基础初探selenium
2021/05/31 Python