如何将 api_token 参数更改为一些自定义参数,如 api_key 或 key

Posted

技术标签:

【中文标题】如何将 api_token 参数更改为一些自定义参数,如 api_key 或 key【英文标题】:How to change api_token parameter to some custom parameter like api_key or key 【发布时间】:2021-04-11 18:39:25 【问题描述】:

我有一个使用 API 令牌身份验证的 Laravel 应用程序。默认情况下,用户需要将api_token 参数作为URL 的一部分传递,但我想将api_token 更改为自定义名称参数,如api_key

目前完整的 URL 如下所示:

https://www.example.com/api/v2/?api_token=something&action=balance

但是我希望它看起来像下面这样:

https://www.example.com/api/v2?api_key=something&action=balance

https://www.example.com/api/v2?key=something&action=balance

我的 API 路由正在使用名为 auth:api 的中间件,但我无法找到该中间件来尝试更改其配置。

【问题讨论】:

所提供的答案是否有帮助?如果您有这样做的声誉,您应该用 ▲ 所有答案 支持。然后,您应该标记接受 ✓ 最能回答您的问题的一个答案。 This will mark the question as "closed," and give you some reputation on the site。如果没有一个答案令人满意,请向 cmets 提供反馈,或编辑您的问题以澄清问题。 【参考方案1】:

我已经有一段时间没有这样做了,但我相信auth.guards.api.input_key 设置将允许您指定它。所以你的auth.php 部分看起来像这样:

<?php

return [
    "guards" => [
        "api" => [
            "driver" => "token",
            "provider" => "users",         // the database table
            "storage_key" => "api_token",  // the database column
            "input_key" => "api_key",      // the query string component
            "hash" => true,
        ],
    ],
];

【讨论】:

【参考方案2】:

您可以简单地创建自己的中间件

public function handle($request, Closure $next)

    $token = request('key'); //it can be anything 
    if ($token != 'abc')  // this value can be static or can be get from database
        return response([
            'error' => 2,
            'message' => ["Access Denied"]
        ]);
    
    return $next($request);

在这里您可以匹配令牌并允许他们某些请求

注意:它适用于 url 参数而不是 headers 令牌,您需要从 header 获取令牌

【讨论】:

以上是关于如何将 api_token 参数更改为一些自定义参数,如 api_key 或 key的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UITableViewCell 分隔符更改为自定义分隔符?

使用 Windows 窗体应用程序时如何将鼠标光标更改为自定义光标?

Material-UI - 如何将自定义 Snackbar 的过渡更改为 Slide

使用 JWT 进行护照身份验证:如何将护照的默认未经授权响应更改为我的自定义响应?

如何将 CakePHP 2 模型关联更改为与 bindModel 和自定义查找器的深度链接?

如何更改令牌保护中的 api_token 列