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数组函数序列 之array_count_values() 统计数组中所有值出现的次数函数
Oct 29 PHP
基于php上传图片重命名的6种解决方法的详细介绍
Apr 28 PHP
PHP判断远程图片是否存在的几种方法
May 04 PHP
laravel 4安装及入门图文教程
Oct 29 PHP
用php守护另一个php进程的例子
Feb 13 PHP
thinkphp实现图片上传功能
Jan 13 PHP
Laravel中间件实现原理详解
Oct 09 PHP
PHP实现Huffman编码/解码的示例代码
Apr 20 PHP
Yii框架页面渲染操作实例详解
Jul 19 PHP
laravel 使用事件系统统计浏览量的实现
Oct 16 PHP
PHP数组对象与Json转换操作实例分析
Oct 22 PHP
如何利用PHP实现上传图片功能详解
Sep 24 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
层叠菜单的动态生成
2006/10/09 PHP
怎么样可以把 phpinfo()屏蔽掉?
2006/11/24 PHP
PHP 数组入门教程小结
2009/05/20 PHP
Zend Studio去除编辑器的语法警告设置方法
2012/10/24 PHP
php根据操作系统转换文件名大小写的方法
2014/02/24 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
2014/08/20 PHP
微信公众平台开发(五) 天气预报功能开发
2016/12/03 PHP
javascript 常用方法总结
2009/06/03 Javascript
JS 时间显示效果代码
2009/08/23 Javascript
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
Vue2实现组件props双向绑定
2016/12/02 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
2018/03/08 Javascript
JS实现显示当前日期的实例代码
2018/07/03 Javascript
JS/HTML5游戏常用算法之追踪算法实例详解
2018/12/12 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
2020/04/07 Javascript
手把手带你搭建一个node cli的方法示例
2020/08/07 Javascript
Python中的匿名函数使用简介
2015/04/27 Python
python简单猜数游戏实例
2015/07/09 Python
改进Django中的表单的简单方法
2015/07/17 Python
Python中死锁的形成示例及死锁情况的防止
2016/06/14 Python
使用Python从有道词典网页获取单词翻译
2016/07/03 Python
对python使用http、https代理的实例讲解
2018/05/07 Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
2018/05/31 Python
pygame游戏之旅 如何制作游戏障碍
2018/11/20 Python
Python实现的矩阵转置与矩阵相乘运算示例
2019/03/26 Python
海滩咖啡馆:Beach Cafe
2018/02/02 全球购物
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
Kathmandu新西兰官网:新西兰户外运动品牌
2019/07/27 全球购物
什么是java序列化,如何实现java序列化
2012/11/14 面试题
What's the difference between deep copy and shallow copy? (深拷贝与浅拷贝有什么区别)
2015/11/10 面试题
小学后勤管理制度
2014/01/14 职场文书
教师考察材料范文
2014/06/03 职场文书
地理科学专业自荐信
2014/09/01 职场文书
2014年置业顾问工作总结
2014/11/17 职场文书
五年级下册复习计划
2015/01/19 职场文书
MyBatis在注解上使用动态SQL方式(@select使用if)
2022/07/07 Java/Android