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