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 REMOTE_ADDR之获取访客IP的代码
Apr 22 PHP
用C/C++扩展你的PHP 为你的php增加功能
Sep 06 PHP
php stripslashes和addslashes的区别
Feb 03 PHP
PHP获取栏目的所有子级和孙级栏目的ID号示例
Apr 01 PHP
php图片的二进制转换实现方法
Dec 15 PHP
使用 PHPStorm 开发 Laravel
Mar 24 PHP
详解Window7 下开发php扩展
Dec 31 PHP
php判断是否连接上网络的方法实例详解
Dec 14 PHP
PHP魔术方法之__call与__callStatic使用方法
Jul 23 PHP
PHP count_chars()函数讲解
Feb 14 PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
Oct 12 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
Oct 17 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 cookie名使用点号(句号)会被转换
2014/10/23 PHP
基于php实现的php代码加密解密类完整实例
2016/10/12 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
dojo 之基础篇
2007/03/24 Javascript
基于jquery的lazy loader插件实现图片的延迟加载[简单使用]
2011/05/07 Javascript
html组件不可输入(只读)同时任何组件都有效
2013/04/01 Javascript
js同比例缩放图片的小例子
2013/10/30 Javascript
escape函数解决js中ajax传递中文出现乱码问题
2014/10/30 Javascript
jQuery实现的手机发送验证码倒计时效果代码分享
2015/08/24 Javascript
jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
2015/10/10 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
vuejs动态组件给子组件传递数据的方法详解
2016/09/09 Javascript
使用classList来实现两个按钮样式的切换方法
2018/01/24 Javascript
基于webpack-hot-middleware热加载相关错误的解决方法
2018/02/22 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
2019/05/08 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
js使用文件流下载csv文件的实现方法
2019/07/15 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&平移轮播效果
2019/08/16 Javascript
图解JS原型和原型链实现原理
2020/09/15 Javascript
Python中pow()和math.pow()函数用法示例
2018/02/11 Python
实例讲解python中的序列化知识点
2018/10/08 Python
解决python selenium3启动不了firefox的问题
2018/10/13 Python
Face++ API实现手势识别系统设计
2018/11/21 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
Python3.7 读取音频根据文件名生成脚本的代码
2020/04/07 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
Python爬虫实现selenium处理iframe作用域问题
2021/01/27 Python
python编程的核心知识点总结
2021/02/08 Python
使用css3实现的windows8开机加载动画
2014/12/09 HTML / CSS
幼儿教师师德承诺书
2014/05/23 职场文书
《刷子李》教学反思
2016/02/20 职场文书
施工安全协议书
2016/03/22 职场文书
2019年健身俱乐部的创业计划书
2019/08/26 职场文书
Java 多态分析
2022/04/26 Java/Android