ThinkPHP6中间件处理后台登录逻辑的用法

作者:admin 发布时间:2020-09-30 10:36:29 浏览:2751次
上篇为大家带来《ThinkPHP6.0使用extends Base方式处理后台登录逻辑》,说好要分享使用ThinkPHP6中间件的方法来做登录逻辑处理。今天就大致讲解一下吧。 首先需要做应用的根目录创建一个中间件的文件夹(和控制器controller同级),小超越就命名为middieware吧,你们可以随意命名,只要便于维护就好,然后在这个文件夹下创建Auth.php文件,同样的文件命名可以根据自己的习惯来。 然后就是放Thinkphp规定的格式代码了,以下是小超越写好的,登录功能代码,我们把拦截的判断代码放在前置中间件里。 [cc lang="php"]/* * @Author: 小超越 * @LastEditors: 小超越工作室https://www.zhe94.com * @desc: 认证中间件 */ namespace app\middleware; use think\facade\Cache; class Auth { public function handle($request, \Closure $next) { //前置中间件 $token=cookie(config('redis.user.admin_token')); $this->adminToken=cache::store('redis')->get(config('redis.user.admin_token').$token); if(empty($this->adminToken) && !preg_match("/Login/",$request->pathinfo())){ return redirect('../login/index',302); } $resd= $next($request); //后置中间件 return $resd; } }[/cc] 现在中间代码有了,我们该如何来调用呢?其实也是很简单的,Thinkphp支持多种的引用中间件的方法,非常便于我们运用,它们分别分为全局中间件、应用中间件(多应用模式下有效)、路由中间件以及控制器中间件四个组。执行顺序分别为:全局中间件->应用中间件->路由中间件->控制器中间件 ThinkPHP6中间件处理后台登录逻辑的用法

全局中间件

全局中间件在app目录下面middleware.php文件中定义,使用下面的方式: return [ // 全局请求缓存 // \think\middleware\CheckRequestCache::class, // 多语言加载 // \think\middleware\LoadLangPack::class, // Session初始化 \think\middleware\SessionInit::class, //加载登录认证 app\middleware\Auth::class ];

应用中间件

如果你使用了多应用模式,则支持应用中间件定义,你可以直接在应用目录下面增加middleware.php文件,定义方式和全局中间件定义一样,只是只会在该应用下面生效。

路由中间件

最常用的中间件注册方式是注册路由中间件 Route::rule('login/:name','login') ->middleware(\app\middleware\Auth::class);

控制器中间件

支持为控制器定义中间件,只需要在控制器中定义middleware属性,例如: namespace app\controller; class Index { protected $middleware = ['app\middleware\Auth'];//加载中间件 public function index() { return 'index'; } public function login() { return 'login'; } } 大家依照这个格式写就好。更加详细的可以参考官方的文档《中间件文档》 中间件的用法,并不难,希望大家能举一反三,中间件顾名思义就是起到中介的作用,用作运行业务代码前起到拦截的作用。实际的项目中运用到的场景还是蛮多的!

如需转载请保留本文出处: https://zhe94.com/811.html

上一篇:快速建站之前言:如何建立一个自己的网站
下一篇:PHP有多少种面向对象设计模式?23种设计模式总结
[uni-app]微信小程序隐私保护指引用户同意窗口代码

[uni-app]微信小程序隐私保护指引用户同意窗口代码

为规范开发者的用户个人信息处理行为,保障用户合法权益,微信要求开发者主动同步微信当前用户已阅读并同意小程序的隐私政策等收集使用规则,方可调用微信提供的隐私接口。
vscode右键运行插件—code runner

vscode右键运行插件—code runner

在VS Code里,能有一种快捷的方式来运行各类的代码,甚至是代码片段。就好了,Code Runner插件支持了 Node.js, Python, C++, Java, PHP, Perl, Ruby, Go等超过40种的语言。下面,我们就来看看如何来玩转Code Runner,提高你的效率。
php中的两个冒号是什么意思?例如Request::header('token')

php中的两个冒号是什么意思?例如Request::header('token')

在PHP中,双冒号(::)被称为范围解析操作符(Scope Resolution Operator),也有时被称为静态调用运算符。它用于引用类中的静态属性、静态方法或常量。
php __construct是什么意思

php __construct是什么意思

在PHP中,__construct是一个魔术方法(Magic Method),用于类的构造函数。当使用new关键字实例化一个对象时,会自动调用该方法。
thinkphp6.*版本的无缝升级到thinkphp8.0版本实操方法

thinkphp6.*版本的无缝升级到thinkphp8.0版本实操方法

ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP诞生十七年来一直秉承简洁实用的设计原则,在保持出色的性能和至简代码的同时,更注重易用性。