# 用户登录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开发
- 《代办服务下单系统》数据库设计
- 业务员表设计
- 《代办服务下单系统》功能模块开发
- 《代办服务下单系统》项目测试报告
- 《代办服务下单系统》项目实施培训
- 《代办服务下单系统》项目维护记录
- 《代办服务下单系统》二次开发备忘
- 附录
- 界面流程
- 功能清单
- 数据字典
- 更新日志
- 关于文档