基于laravel的api请求中间件认证

本文主要演示了基础的在laravel框架上的用户携带appid与appsecret 请求数据 返回JSON 的过程

  • 第一步 创建演示控制器 api/member.php
php artisan make:controller Api/member

在这里插入图片描述

  • 第二步 创建中间件
php artisan make:middleware ApiAuth

在这里插入图片描述

  • 第三步 注册中间件
    app/http/Kernel.php中的protected $routeMiddleware数组添加新创建的中间件并给他一个别名
    在这里插入图片描述
  • 第四步 在新建的中间件中写鉴权
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\DB;

class ApiAuth
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        // api鉴权中间件
        // 请求需要 appid appsecret 两个值
        // 验证是否有传值
        if(!isset($request->appid) || !isset($request->appsecret) ){
            exit(json_encode(['code'=>404,'msg'=>'缺少参数']));
        }
        // 拿到参数
        $data = [];
        $data['appid'] = trim($request->appid);
        $data['appsecret'] = trim($request->appsecret);
        // 去查数据库存不存在 访问量大建议存redis
        $app = DB::table('api_user')->where($data)->item();
        // 如果不存在
        if(empty($app)){
            exit(json_encode(['code'=>404,'msg'=>'appid或appsecret错误']));
        }
        // 如果存在继续往下执行

        return $next($request);
    }
}

到现在为止你的中间件已经可以正常使用了

  • 创建新的api路由 带上新创建中间件
// API模块
/**
* namespace指向Api文件夹 因为控制器在Controllers/Api文件夹中 后面路由就不用写了
* 如果不加namespace 路由这样写
* Route::get('member','Api\Member@index');
* 加了namespace
* Route::get('member','Member@index');
*/
Route::namespace('Api')->middleware(['api_auth'])->group(function(){
   // 定义get请求
   Route::get('member','Member@index');
});

下面开始演示

  1. 如果不携带appid, 提示”缺少参数“
    在这里插入图片描述
  2. 如果 appid 或 appsecret 不正确 提示”appid或appsecret错误“

在这里插入图片描述
3. 如果验证通过 返回需要的数据
在这里插入图片描述


总结
API 接口 没有想象中的神秘 他跟html 没什么区别 无非就是浏览器认识html文本并把它编译成可视内容罢了

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Laravel是一种流行的PHP框架,用于构建Web应用程序。RBAC(Role-Based Access Control)是一种在应用程序中管理用户权限的方法。在Laravel中,可以使用API代码来实现RBAC。 实现RBAC的第一步是定义角色和权限。在Laravel中,可以使用数据库表来存储角色和权限的信息。可以创建一个名为roles的表来存储角色信息,包括角色名称和可访问的路由。还可以创建一个名为permissions的表来存储权限信息,包括权限名称和对应的路由。 接下来,需要在Laravel中定义路由,用来处理权限的验证和角色的分配。可以创建一个名为'check.permission'的中间件,用于验证用户的权限。在这个中间件中,可以查询数据库,获取当前用户的角色和可访问的路由,然后进行权限验证。如果用户没有权限访问该路由,则返回相应的错误信息。 当用户登录后,可以为用户分配一个或多个角色。在Laravel中,可以使用Session来存储用户信息。可以创建一个名为'assign.role'的路由,用于接收用户角色的分配请求。在这个路由中,可以将用户ID和角色ID存储到数据库中,并将用户的角色信息存储到Session中。 最后,可以创建一个名为'check.role'的中间件,用于验证用户的角色。在这个中间件中,可以查询数据库,获取当前用户的角色信息,并与当前访问的路由所需的角色进行比较。如果用户不具备所需的角色,则返回相应的错误信息。 通过以上步骤,可以实现基于角色和权限的访问控制。在Laravel中使用RBAC API代码,可以有效地管理和控制用户的权限,确保应用程序的安全性和完整性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值