yii2项目实战-restful api之授权验证完整案例
20760
0
0
什么是restful风格的api呢?之前我们介绍过yii2 RESTful api的详细使用,了解到restful的基本概念以及简单操作。
今天我们侃侃那些年api遇到的授权验证问题!独家干货,如果看完有所受益,记得不要忘记给我点赞哦。
业务分析
我们先来了解一下整个业务逻辑
- 用户在客户端填写登录表单
- 用户提交表单,客户端请求登录接口login
- 服务端校验用户的帐号密码,并返回一个有效的token给客户端
- 客户端拿到用户的token,将之存储在客户端比如cookie中
- 客户端携带token访问需要校验的接口比如获取用户个人信息接口
- 服务端校验token的有效性,校验通过,返回客户端需要的信息,校验失败,需要用户重新登录
本文我们以用户登录,获取用户的个人信息为例进行详细的一个说明。
以上,便是我们本篇文章要实现的重点。先别激动,也别紧张,分析好了之后,细节部分我们再一步一个脚印走下去。
准备工作
- 你应该已经有了一个api应用,如果你还没有,请先移步这里→_→ Restful api基础
- 对于客户端,我们准备采用postman进行模拟,如果你的google浏览器还没有安装postman,请先自行下载
- 要测试的用户表需要有一个名字叫做 api_token 的字段,没有的请先自行添加,并保证该字段足够长度
- api应用开启了路由美化,并先配置post类型的login操作和get类型的signup-test操作
- 关闭了user组件的session会话
关于第5点,找到api/config/main.php,对user组件的配置修改如下
'components' => [ 'user' => [ 'identityClass' => 'common\models\User', 'enableAutoLogin' => true, 'enableSession' => false, 'loginUrl' => null, ], // other code ...... ],
对于第4点,通常我们可以对urlManager这样配置(依然是api/config/main.php)
'components' => [ 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'enableStrictParsing' => true, 'rules' => [ [ 'class' => 'yii\rest\UrlRule', 'controller' => ['v1/user'], 'extraPatterns' => [ 'POST login' => 'login', 'GET signup-test' => 'signup-test', ] ], ] ], // ...... ],
但是,当api应用需要配置的路由逐渐增多的时候,会导致我们的配置文件main.php变得非常冗余,不美观。我们准备在api/config目录下增加一个url-rules.php,专门用于管理需要配置的路由,现在我们把urlManager::rules改写如下
'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'ena
还有88%的精彩内容,购买继续阅读
- 评论区
共181条评论
登录
后发布评论