我安裝了 composer require tinywan/jwt 。
我在用 webman 生成接口,給小程序和 app 使用,用戶的所有操作,都需要帶上手機(jī)號(hào),你確保身份唯一。
如果有人按照我設(shè)置的規(guī)則, 并且更改了手機(jī)號(hào),生成了 jwt , 我還需要不需要在接口里去驗(yàn)證token里的手機(jī)號(hào)和用戶傳遞過(guò)來(lái)的手機(jī)號(hào)是否一樣?或者用戶用正確的 token ,但是更改了傳遞過(guò)來(lái)的手機(jī)號(hào),我是否需要驗(yàn)證?
public function venueOrderinfoVerification(Request $request, string $local_order_number){
// 獲取 TokenVerifyMiddleware 里已經(jīng)解密好的用戶數(shù)據(jù)
$staffinfo = $request->data;
$param = [
'mobile' => $request->get('mobile'),
'local_order_number' => $local_order_number,
];
$validate = new VenueOrderinfoVerificationValidate();
if (!$validate->check($param)) {
return json($validate->getError());
}
// 去除傳遞過(guò)來(lái)參數(shù)的前后空格
$param = array_map('trim', $param);
// 這部分多余不????????
if ($param['mobile'] != $staffinfo['mobile']){
return json([
// 'HTTP_FAIL_REQUEST' => [200112, '非法請(qǐng)求,請(qǐng)確認(rèn)請(qǐng)求者身份。'],
'code' => config('myconfig.statusCode.HTTP_FAIL_REQUEST')[0],
'msg' => config('myconfig.statusCode.HTTP_FAIL_REQUEST')[1],
'data' => [],
]);
}
// 業(yè)務(wù)邏輯...
return json([
// 'HTTP_OK' => [200100, '請(qǐng)求成功'],
'code' => config('myconfig.statusCode.HTTP_OK')[0],
'msg' => config('myconfig.statusCode.HTTP_OK')[1],
'data' => [],
]);
}
token 傳過(guò)來(lái) 不是應(yīng)該還要在服務(wù)端自行驗(yàn)證嗎?你可以將所有的電話號(hào)碼提前放在內(nèi)存;到時(shí)候在內(nèi)存驗(yàn)證 就可以了
這個(gè)決定是要走中間件令牌校驗(yàn)的??梢詤⒖歼@里:https://github.com/Tinywan/webman-admin/blob/main/app/middleware/AuthorizationMiddleware.php
class AuthorizationMiddleware implements MiddlewareInterface
{
/**
* @param Request $request
* @param callable $handler
* @return Response
* @throws ForbiddenHttpException|UnauthorizedHttpException
*/
public function process(Request $request, callable $handler): Response
{
$request->uid = JwtToken::getCurrentId();
if (0 === $request->uid) {
throw new UnauthorizedHttpException();
}
// ....其他
return $handler($request);
}
}