ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 用户登录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'); > ``` >