这是制作Laravel令牌中间件的正确方法吗

这是制作Laravel令牌中间件的正确方法吗,laravel,Laravel,我想让我的API对每个没有令牌访问的客户机都不可用 这意味着Android应用程序将发送一个客户端作为Android和令牌作为令牌字符串,在标题中使用键客户端和令牌 现在在中间件中,我正在用我的表字段检查它以通过授权。如果两者都匹配,则我将授权,如果不匹配,则将发送403响应 我知道护照,但它不是我要找的。事实上 将其视为第一层安全性,然后使用护照作为 授权API的第二层安全性 这个代码正确吗? 由于我对Laravel-Middleware不太熟悉,我只想从专家那里得到一些反馈,看看我写的代码是

我想让我的API对每个没有令牌访问的客户机都不可用

这意味着Android应用程序将发送一个
客户端
作为
Android
令牌
作为
令牌字符串
,在标题中使用键
客户端
令牌

现在在
中间件中
,我正在用我的表字段检查它以通过授权。如果两者都匹配,则我将授权,如果不匹配,则将发送
403
响应

我知道护照,但它不是我要找的。事实上 将其视为第一层安全性,然后使用护照作为 授权API的第二层安全性

这个代码正确吗? 由于我对Laravel-Middleware不太熟悉,我只想从专家那里得到一些反馈,看看我写的代码是否准确,是否符合标准。如果没有,我将感谢你的建议,并帮助它更好

中间件 API路由 我从ApiToken表中获取结果只是为了检查。


我无法在这里添加评论。这对我来说似乎是正确的,但我认为不需要额外的一层。也许你的需求需要它。无论如何,您可以改进checkToken函数以返回布尔值。这是:

public function checkToken( $request ) {

    $client = $request->header( 'client' );
    $token  = $request->header( 'token' );

    return ApiToken::where( 'client', $client )
                          ->where( 'token', $token )->exists();
// Nicer, and it will return true and false based on the existence of the token and client.
}

还有一件事,当访问被禁止时,返回状态代码403。401返回时出现未经授权的错误。

它是经过良好优化的完美查询。谢谢。
Route::get('/', function(Request $request) {
    return ApiToken::all();
})->middleware('apiAccess');
public function checkToken( $request ) {

    $client = $request->header( 'client' );
    $token  = $request->header( 'token' );

    return ApiToken::where( 'client', $client )
                          ->where( 'token', $token )->exists();
// Nicer, and it will return true and false based on the existence of the token and client.
}