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

「这是我参与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()
        ]);
复制代码

image.png

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

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

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

image.png

发送请求即可得到数据 image.png

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

Guess you like

Origin juejin.im/post/7031701757717807134