laravel利用中间件做防非法登录和权限控制示例
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利用中间件做防非法登录和权限控制示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
浅谈Laravel中的三种中间件的作用
在之前一直简单的认为中间件就是往middleware里添加中间件即可.现在才知道中间件有三种类型,分别为:$middleware $middlewareGroup $routeMiddleware 通过查阅资料,终于明白了这三种类型的作用和不同. 第一种,全局中间件/$middleware: 我们的每一次请求,这里面的每个中间件都会执行. 第二种,路由中间件/$routeMiddleware: 定义在该属性内的中间件,只能在定义路由的时候引用. 假设这是我们定义的路由中间件: protected
-
laravel框架中间件 except 和 only 的用法示例
本文实例讲述了laravel框架中间件 except 和 only 的用法.分享给大家供大家参考,具体如下: except except:为黑名单机制,除了show页面不经过中间件Auth过滤,其他都需要过滤,如果没有通过验证,则跳转到指定的页面 only only:为白名单机制,除了edit页面需要经过中间件Auth过滤,其他都不需要过滤,如果没有通过验证,则跳转到指定的页面 except用法: class UserController extends Controller { public
-
Laravel框架控制器的middleware中间件用法分析
本文实例讲述了Laravel框架控制器的middleware中间件用法.分享给大家供大家参考,具体如下: 场景:活动开始前只能访问宣传页面,开始后才可以访问其他页面: 步骤: 新建中间件, 注册中间件, 使用中间件, 中间件的前置和后置操作. 控制器: public function activity0(){ return '活动快要开始啦,敬请期待'; } public function activity1(){ return '活动页面1'; } public function activi
-
Laravel获取当前请求的控制器和方法以及中间件的例子
laravel获取请求路由对应的控制器和方法很简单: 在任何地方都可以使用: dd(request()->route()->getAction()); 得到如下结果: array:6 [▼ "middleware" => array:2 [▼ 0 => "web" 1 => "auth" ] "uses" => "App\Http\Controllers\TeacherSchedu
-
laravel利用中间件防止未登录用户直接访问后台的方法
中间件介绍 http://laravelacademy.org/post/7812.html 创建中间件 php artisan make:middleware AdminLogin 然后我们打开kernel.php,将这个中间件加入到$routeMiddleware路由中间件中 'admin.login' => \App\Http\Middleware\AdminLogin::class, 一个简单的小判断,判断一下有没有session存在,如果有的话就直接走我们现在访问的路由,如果没有ses
-
laravel在中间件内生成参数并且传递到控制器中的2种姿势
姿势1 使用$request->attributes->add($arr)方法 Demo: 注册中间件这部分就不说了 主要说用法 class MidParams //中间件 { public function handle($request, Closure $next) { $mid_params = ['mid_params'=>'this is mid_params']; $request->attributes->add($mid_params);//添加参数 ret
-
Laravel5.1框架注册中间件的三种场景详解
本文实例讲述了Laravel5.1框架注册中间件的三种场景.分享给大家供大家参考,具体如下: 在Laravel中注册中间件主要有三种场景,一种给控制器中的方法进行注册,一种是给整个控制器进行注册,最后一种是给全局注册中间件. 1.在控制器中的方法中注册中间件 这种需求是最为常见,这个例子是给IndexController中的index方法添加中间件. Route::get('/', ['middleware'=>['App\Http\Middleware\EmailMiddleware'],'u
-
基于Laravel 多个中间件的执行顺序详解
问题 一个路由需要用到多个中间件,其中一个是 Laravel 自带的 auth 中间件. 发现这个中间件不管放在哪里,总是在自定义中间件之前执行. 如果业务需要自定义中间在 auth 之前执行,还是有办法的. 解决方案 观察定义中间件的 app\Http\Kernel 类,是继承的 Illuminate\Foundation\Http\Kernel 类. 再打开 Illuminate\Foundation\Http\Kernel ,发现有这样一个数组 ... /** * The priority
-
Laravel 6 将新增为指定队列任务设置中间件的功能
Taylor Otwell 在 Laravel 6 中新增了为指定队列任务设置中间件的能力,以便我们在执行某些队列任务之前先执行一些业务逻辑: This [pull request] adds an easy way to have job specific middleware for queued jobs. Global job middleware were actually already possible by calling Bus::pipeThrough([]) in a se
-
laravel利用中间件做防非法登录和权限控制示例
laravel框架的中间件非常好用,使得我们的防非法和rbac可以简单快速的实现 中间件就是控制路由的访问,进行分类并统一管理 1.首先我们打开artisan输入下面的命令行,创建一个中间件文件 php artisan make:middleware AdminLogin 执行命令后我们会发现Middleware文件夹会多出一个AdminLogin文件 2.然后我们打开kernel.php,将这个中间件加入到路由中间件中 protected $routeMiddleware = [ 'auth'
-
spring boot 1.5.4 集成shiro+cas,实现单点登录和权限控制
1.添加maven依赖(先安装好cas-server-3.5.2,安装步骤请查看本文参考文章) <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.2.4</version> </dependency> <dependency> <groupId>
-
Springboot+SpringSecurity+JWT实现用户登录和权限认证示例
如今,互联网项目对于安全的要求越来越严格,这就是对后端开发提出了更多的要求,目前比较成熟的几种大家比较熟悉的模式,像RBAC 基于角色权限的验证,shiro框架专门用于处理权限方面的,另一个比较流行的后端框架是Spring-Security,该框架提供了一整套比较成熟,也很完整的机制用于处理各类场景下的可以基于权限,资源路径,以及授权方面的解决方案,部分模块支持定制化,而且在和oauth2.0进行了很好的无缝连接,在移动互联网的授权认证方面有很强的优势,具体的使用大家可以结合自己的业务场景进行选
-
Spring Security实现统一登录与权限控制的示例代码
目录 项目介绍 统一认证中心 配置授权服务器 配置WebSecurity 登录 菜单 鉴权 资源访问的一些配置 有用的文档 项目介绍 最开始是一个单体应用,所有功能模块都写在一个项目里,后来觉得项目越来越大,于是决定把一些功能拆分出去,形成一个一个独立的微服务,于是就有个问题了,登录.退出.权限控制这些东西怎么办呢?总不能每个服务都复制一套吧,最好的方式是将认证与鉴权也单独抽离出来作为公共的服务,业务系统只专心做业务接口开发即可,完全不用理会权限这些与之不相关的东西了.于是,便有了下面的架构图:
-
SpringBoot如何整合Springsecurity实现数据库登录及权限控制
目录 第一步 第二步是封装一个自定义的类 第三步, 我们需要判断密码啦 总结 我们今天使用SpringBoot来整合SpringSecurity,来吧,不多BB 首先呢,是一个SpringBoot 项目,连接数据库,这里我使用的是mybaties.mysql, 下面是数据库的表 DROP TABLE IF EXISTS `xy_role`; CREATE TABLE `xy_role` ( `xyr_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键i
-
Springboot+Spring Security实现前后端分离登录认证及权限控制的示例代码
目录 前言 本文主要的功能 一.准备工作 1.统一错误码枚举 2.统一json返回体 3.返回体构造工具 4.pom 5.配置文件 二.数据库表设计 初始化表数据语句 三.Spring Security核心配置:WebSecurityConfig 四.用户登录认证逻辑:UserDetailsService 1.创建自定义UserDetailsService 2.准备service和dao层方法 五.用户密码加密 六.屏蔽Spring Security默认重定向登录页面以实现前后端分离功能 1.实
-
Laravel框架实现利用中间件进行操作日志记录功能
本文实例讲述了Laravel框架实现利用中间件进行操作日志记录功能.分享给大家供大家参考,具体如下: 利用中间件进行操作日志记录过程: 1.创建中间件 php artisan make:middleware AdminOperationLog 2.生成了文件./app/Http/Middleware/AdminOperationLog.php 代码如下: <?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\R
-
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
本文实例讲述了Laravel框架基于中间件实现禁止未登录用户访问页面功能.分享给大家供大家参考,具体如下: 1.生成中间件 [root@localhost MRedis]# php artisan make:middleware CheckLogin Middleware created successfully. 2.实现中间件,在app\http\middleware\CheckLogin.php public function handle($request, Closure $next)
-
yii2.0框架使用 beforeAction 防非法登陆的方法分析
本文实例讲述了yii2.0框架使用 beforeAction 防非法登陆的方法.分享给大家供大家参考,具体如下: beforeAction基本原理: 对比 1.执行顺序 init > beforeAction 2.调用子函数时,两个函数都不会再次执行 3.返回值 init返回false继续执行,beforeAction停止执行 4.执行EXIT,全部停止 从框架的示例代码来看,init用于初始化数据,beforeAction用户事件的处理 代码 // 登录统一验证 public function
随机推荐
- Codeigniter检测表单post数据的方法
- JS脚本实现动态给标签控件添加事件的方法
- AngularJS中isolate scope的用法分析
- 深入分析:用1K内存实现高效I/O的RandomAccessFile类的详解
- Java集合类的组织结构和继承、实现关系详解
- python分割文件的常用方法
- C#中yield用法使用说明
- 详解NodeJS框架express的路径映射(路由)功能及控制
- Java类获取Spring中bean的5种方式
- 微信页面倒计时代码(解决safari不兼容date的问题)
- jQuery 1.5最新版本的改进细节分析
- 用Jquery.load载入页面后样式没了页面混乱的解决方法
- jquery判断复选框是否选中进行答题提示特效
- JavaScript处理解析JSON数据过程详解
- 理解javascript闭包
- Linux 用cp和rsync同步文件时跳过指定目录的方法
- C#中方法的详细介绍
- 浅谈Android Aidl 通讯机制
- C#使用Json.Net进行序列化和反序列化及定制化
- javacv视频抽帧的实现过程详解(附代码)