当前位置: 首页 / 网站建设 / 正文

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

发布时间:2020-09-30 10:36:29 作者:小超越君

上篇为大家带来《ThinkPHP6.0使用extends Base方式处理后台登录逻辑》,说好要分享使用ThinkPHP6中间件的方法来做登录逻辑处理。今天就大致讲解一下吧。

首先需要做应用的根目录创建一个中间件的文件夹(和控制器controller同级),小超越就命名为middieware吧,你们可以随意命名,只要便于维护就好,然后在这个文件夹下创建Auth.php文件,同样的文件命名可以根据自己的习惯来。

然后就是放Thinkphp规定的格式代码了,以下是小超越写好的,登录功能代码,我们把拦截的判断代码放在前置中间件里。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*
 * @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;
    }
}

现在中间代码有了,我们该如何来调用呢?其实也是很简单的,Thinkphp支持多种的引用中间件的方法,非常便于我们运用,它们分别分为全局中间件、应用中间件(多应用模式下有效)、路由中间件以及控制器中间件四个组。执行顺序分别为:全局中间件->应用中间件->路由中间件->控制器中间件

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

全局中间件

全局中间件在app目录下面middleware.php文件中定义,使用下面的方式:

1
2
3
4
5
6
7
8
9
10
return [
    // 全局请求缓存
    // \think\middleware\CheckRequestCache::class,
    // 多语言加载
    // \think\middleware\LoadLangPack::class,
    // Session初始化
     \think\middleware\SessionInit::class,
    //加载登录认证
    app\middleware\Auth::class
];

应用中间件

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

路由中间件

最常用的中间件注册方式是注册路由中间件

1
2
Route::rule('login/:name','login')
 ->middleware(\app\middleware\Auth::class);

控制器中间件

支持为控制器定义中间件,只需要在控制器中定义middleware属性,例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
namespace app\controller;

class Index
{
    protected $middleware = ['app\middleware\Auth'];//加载中间件

    public function index()
    {
        return 'index';
    }

    public function login()
    {
        return 'login';
    }
}

大家依照这个格式写就好。更加详细的可以参考官方的文档《中间件文档

中间件的用法,并不难,希望大家能举一反三,中间件顾名思义就是起到中介的作用,用作运行业务代码前起到拦截的作用。实际的项目中运用到的场景还是蛮多的!

知识在于传播与沉淀,转载请保留本文链接:https://www.zhe94.com/811.html

小超越
热爱折腾,曾想着改变世界,如今只能向生活低头,寻找可口的牛奶和面包
添加站长微信作者头像
专注高品质湛江网站建设及湛江SEO优化服务 立即咨询