Laravel8 快速入门教程二十二 - 用户登录业务完成

90 阅读2分钟

本文由 简悦 SimpRead 转码, 原文地址 juejin.cn

「这是我参与 11 月更文挑战的第 11 天,活动详情查看:2021 最后一次更文挑战

背景

  1. 项目用 Thinkphp5.1 开发完成,对于各种关系模型的查询 Tp 处理起来还是比较吃力的。
  2. 作为努力奔跑的程序员,下一个项目我们决定用 Lavarel 进行开发。
  3. 因为掘金粑粑有奖励,所以把部分 gitee 上的私有的部分学习笔记整理一下。

说明

Laravel 属于中大型框架,各种功能都被内置了,而且 Laravel 官方的文档看的我是云里雾里的,对于新手感觉不是很友好。所以此系列文章只适合有 PHP 基础。想快速入门搞开发的

正文

上一节中我们分析定位到了问题,这一节我们继续完成登录拦截操作。

  1. app\Http\Middleware\Authenticate.php 文件中定义 Jwt 拦截的处理方法
    /**
     * jwt登录拦截
     */

    protected function unauthenticated($request, array $guards)
    {   
        if($request->expectsJson() || in_array('api',$guards)){
            throw new LoginException();
        }

        parent::authenticate($request, $guards);
    }
复制代码

其中定义了 LoginException 这个跟之前的 ValidateException 很是类似,所以我们只是讲解步骤。 2. 定义文件 app\Exceptions\LoginException.php

<?php
/**
 * [未登录统一处理] 
 * Author Liiy. 
 * Date 2021/11/14. 
 * Time 21:10. 
 */

namespace App\Exceptions;

use Exception;

class LoginException extends Exception{

    protected $code = 204;  // 定义错误码
    protected $message="请完成登录操作";
}
复制代码

定义了错误码跟错误信息

3.app\Exceptions\Handler.php 统一异常中定义如果处理这个异常类

        //登录拦截
       if($exception instanceof LoginException){
        return response()->json([
            'code'=>$exception->getCode(),
            'msg'=>$exception->getMessage()
        ]);
复制代码

  1. 此时再次对发表文章的接口进行请求,得到我们想要的结果。

这是说明我们没有登陆,没办法发表文章。

  1. 我们把之前得到的令牌 添加到请求中

发送请求即可得到数据

【总结】:上面完成了完整流程的获取文章列表,登录,发表文章的接口。别的业务也是按照这个架构来,只是在重复上面的步骤,细化逻辑而已。所有内容为纯手工打字,望能动动小手点点赞下面我们会继续按照这个思路去开发后台获取文章列表,审核文章的功能。