Lumen企业站内容管理实战 - 后台管理之认证二

后台管理之认证二

上篇文章写的是用JWT做的认证,对于不是前后端分离的情况,其实是不合适的,这次试用基于cookie的认证实现后台管理认证。

第一步:打开/routes/web.php文件,在$router->group()参数中,增加一个:'middleware' => 'auth.admin',middleware的值你可以自己命名,我这里叫做auth.admin。

Lumen企业站内容管理实战 - 后台管理之认证二_第1张图片

 第二步:打开/bootstrap/app.php文件,增加路由中间件

 $app->routeMiddleware([
     'auth.admin' => App\Http\Middleware\AdminAuthenticate::class,
 ]);

Lumen企业站内容管理实战 - 后台管理之认证二_第2张图片 注意,auth.admin一定要和路由中的auth.admin对应上,不然不会起作用的

为了用户的信息在cookie中是安全的,我们使用加解密功能,这个功能需要手动打开,在这个app.php文件中,增加代码

$app->register(Illuminate\Encryption\EncryptionServiceProvider::class);

Lumen企业站内容管理实战 - 后台管理之认证二_第3张图片

加了它还不行,因为配置文件还没有做,必须设置一个key,你就随机生成一个32位长度的key,然后把可以放到.env文件中的APP_KEY后面

Lumen企业站内容管理实战 - 后台管理之认证二_第4张图片

然后在app.php文件中,引入/config/app.php文件

$app->configure('app'); // 引入/config/app.php文件中的配置信息

Lumen企业站内容管理实战 - 后台管理之认证二_第5张图片

第三步:在/app/Http/Middleware/目录下,新建文件AdminAuthenticate.php文件,内容如下

id)){
                Throw new \Exception('账号错误');
            }

            // 检查启用状态
            if($adminInfo->state != 1){
                Throw new \Exception('请联系管理员');
            }

        }catch (\Exception$e){

            // 出错后,可以跳转到错误页面,也可直接返回错误信息

            $arrayResult['code'] = 401;
            $arrayResult['message'] = $e->getMessage();
            $arrayResult['data'] = [];

            return response()->json($arrayResult, 401)->setEncodingOptions(JSON_UNESCAPED_UNICODE);
        }

        // $next不能少
        return $next($request);
    }
}

第四步:在用户登录的时候

// 取出用户的ID,对ID进行加密,然后存到coolkie中
setcookie('user_id',Crypt::encrypt($admin->id), time() + 36000);

结束。

你可能感兴趣的:(lumen教程)