# 用戶登錄api接口
## 接口文檔
## 1.端點設計
| 接口名稱 |端點 |請求方法 | 說明 |
| --- | --- | --- | --- |
| 用戶注冊 |http://api.daiban.com/login | post |用戶登錄 |
## 2.參數
| 參數名稱 |是否必填 |類型 | 說明 |
| --- | --- | --- | --- |
| username|是 | string |用戶名(手機號)|
| password|是 | string |密碼|
| timestamp|是 | int|時間戳|
## 3.header
如果是APP項目 需要傳遞必要的信息 建議放到header傳遞
| 參數名稱 |是否必填 |類型 | 說明 |
| --- | --- | --- | --- |
| sign|是 | int|簽名|
簽名算法
需要所有的請求參數(get,post),按照參數名稱進行升序排序,然后 &符相連接 再進行md5加密!
## 4.響應
> 接口無論是否請求成功或者失敗,都需要給請求方有響應數據返回。只有這樣才可以給請求方更好的體驗,也方便接口調試。在這里我們統一用JSON格式的數據返回。返回的數據結構需要根據項目的需求來定。
#### 響應數據如下:
響應頭
```
HTTP/1.1 200 OK
Content-Type:application/json
```
返回數據
```
{
message:"登錄成功",
data:{},
errorcode:0
}
```
## 5.錯誤碼
項目錯誤碼對照表 每一個字段至少定義一個錯誤碼
| 項目錯誤碼 | 說明 |備注 |
| --- | --- | --- |
| 60000|用戶名不正確|
| 60001|密碼不正確|
| 60002|驗證碼錯誤|
| 60003|請求超時|
| 60004|未知錯誤|
| 60005|時間戳不正確|
| 60006|參數錯誤|
| 60007|簽名錯誤|
| 60008|參數獲取失敗|
| 60009|用戶不存在|
| 60010|無權訪問|token不正確時返回 重新登錄
| 60011|登錄過期|返回 重新登錄
項目使用HTTP狀態碼
| 項目狀態碼| 說明 |備注 |
| --- | --- |--- |
| 200|服務器成功處理請求|
| 201|服務器成功創建資源|
| 400|錯誤請求服務器不理解請求的語法|
| 401|未授權請求,要求身份驗證|
| 403|服務器禁止,拒絕請求|
| 404|服務器找不到請求的網頁|
| 500|服務器內部錯誤服務器遇到錯誤,無法完成請求|
## 6.開發流程
1.打開postman 部署用戶登陸測試接口
2.thinkphp中配置登陸api接口 路由 route
> //用戶登陸?
> Route::post('/:ver/login',':ver.Login/login');
3.創建api控制器Login
> D:\phpstudy_pro\WWW\daiban>php think make:controller api@v1/Login --plain
4.在Login控制器中創建login方法
5.在login方法中 依賴注入Request 接受t傳過來的所有參數
6.Login控制器 繼承Common控制器 實現時間戳和簽名的認證
7.創建Login 驗證器 繼承extends BaseValidate 驗證器
8.login 方法中調用Login驗證器7
9.登陸驗證,到數據庫查詢用戶信息進行對比
5.保持驗證狀態
1.數據庫存儲 token令牌和 過期時間
2.創建公共類文件Auth
token 生成方法
> ```
> md5($this->username.time().rand(100000,999999));
> ```
3.創建中間件CheckApiLogin 簡化訪問登錄狀態保持
middleware CheckApiLogin類
> ```
>
> publicfunction?handle($request,?\\Closure?$next)
> ????{
> //令牌token?過期時間驗證
> ????????Auth::getInstance()->checkLogin();
> return?$next($request);
> ????}
> ```
4.中間件別名配置 根目錄下 middleware.php
>
> ```
> <?php
> //?中間件配置
>return?[
> 'alias'?=>?[ //?別名或分組
> 'checkLogin'=>\\app\\middleware\\CheckApiLogin::class,
> ??? ?],
> ];
> ```
5.中間件調用 路由直接配置檢查登錄狀態
> ```
> Route::post('/:ver/test',':ver.Login/test')->middleware('checkLogin');
> ```
>
- 序言
- 項目開發前準備
- phpstudy安裝及介紹
- thinkphp6安裝及介紹
- HBuider X安裝及介紹
- php_mysql安裝及介紹
- apache_composer安裝及介紹
- PHP快速入門
- 重點技術
- MYSQL快速入門
- JS快速入門
- 重點技術
- Vue快速入門
- Uniapp快速入門
- 常見問題
- 重點技術
- Thinkphp6快速入門
- 重點技術
- 基礎知識
- 常見問題
- Html5快速入門
- Css快速入門
- Flex布局快速入門
- Flex基礎知識
- 快捷布局方式
- Axure PR 快速入門
- Axure9安裝
- 《代辦服務下單系統》項目確認
- 需求商務確認
- 項目合同確認
- 《代辦服務下單系統》項目概況
- 系統架構
- 系統流程
- 頁面流程
- 系統功能
- 《代辦服務下單系統》項目原型設計
- 業務員端原型設計
- 客戶端原型設計
- 公司后臺原型設計
- 供應商端原型設計
- 《代辦服務下單系統》美工UI設計(略)
- 《代辦服務下單系統》項目界面開發
- 業務員端界面
- 《代辦服務下單系統》前端數據處理
- 《代辦服務下單系統》項目api開發
- api基礎知識
- postman入門
- VS code 編輯器
- Node.js調試環境
- crypto-js加密庫
- 用戶注冊api接口開發
- 用戶登陸接口api開發
- 《代辦服務下單系統》數據庫設計
- 業務員表設計
- 《代辦服務下單系統》功能模塊開發
- 《代辦服務下單系統》項目測試報告
- 《代辦服務下單系統》項目實施培訓
- 《代辦服務下單系統》項目維護記錄
- 《代辦服務下單系統》二次開發備忘
- 附錄
- 界面流程
- 功能清單
- 數據字典
- 更新日志
- 關于文檔