Api-2 使用者註冊接口
添加使用者註冊路由
$api->post('url','UsersController@store'); //使用者註冊
創建api請求驗證類和控制器
php artisan make:controller name; php artisan make:request name
寫入驗證方法和使用者創建
調用請求類和使用者模型
- 首先請求類會驗證key是否存在
Cache::get($request->verification_key); 獲取快取
- 我們只要在快取中獲取到key,如果獲取到key那麼驗證碼就已經失效了
if(!快取){return $this->response->error('驗證碼已失效', 422);}
- 如果有驗證碼,匹配驗證碼
if (!hash_equals($verifyData['code'], $request->verification_code)){//返回驗證碼匹配失敗,hash_equals可避開時序破解驗證碼}
- 匹配成功後,講使用者添加到數據庫
User:create(['name']=>$request->name,..,...,)
- 清除驗證碼 返回OK
Cache::forget($request->..);
POSTMAN測試
模擬獲取key
模擬使用者註冊提交
數據庫檢測使用者
api-3 防止惡意攻擊調用接口
限制api接口調用
中間件api.throttle控制調用頻率
$api->version('v1', [
'namespace' => 'App\Http\Controllers\Api',
], function($api) {
$api->group([
'middleware' => 'api.throttle',
'limit' => 1,
'expires' => 1,
], function($api) {
// 短信驗證碼
$api->post('verificationCodes', 'VerificationCodesController@store')
->name('api.verificationCodes.store');
// 使用者註冊
$api->post('users', 'UsersController@store')
->name('api.users.store');
});
});
測試
config api文件配置
config配置
'rate_limits' => [
// 訪問頻率限制,次數/分鐘
'access' => [
'expires' => env('RATE_LIMITS_EXPIRES', 1),
'limit' => env('RATE_LIMITS', 60),
],
// 登錄相關,次數/分鐘
'sign' => [
'expires' => env('SIGN_RATE_LIMITS_EXPIRES', 1),
'limit' => env('SIGN_RATE_LIMITS', 10),
],
],
api 配置 ‘limit’ => config(‘api.rate_limits.sign.limit’),
聲明:本文為原創作品,版權歸作者所有。未經許可,不得轉載或用於任何商業用途。如若本站內容侵犯了原著者的合法權益,可聯繫我們進行處理。
謝謝大佬指導
api必須加密做限制
[aru_52]好