首页 > 开发 > PHP > 正文

yii2项目实战之restful api授权验证详解

2024-05-04 22:47:36
字体:
来源:转载
供稿:网友

前言

什么是restful风格的api呢?我们之前有写过大篇的文章来介绍其概念以及基本操作。

既然写过了,那今天是要说点什么吗?

这篇文章主要针对实际场景中api的部署来写。

我们今天就来大大的侃侃那些年api遇到的授权验证问题!独家干活,如果看完有所受益,记得不要忘记给我点赞哦。

业务分析

我们先来了解一下整个逻辑

用户在客户端填写登录表单 用户提交表单,客户端请求登录接口login 服务端校验用户的帐号密码,并返回一个有效的token给客户端 客户端拿到用户的token,将之存储在客户端比如cookie中 客户端携带token访问需要校验的接口比如获取用户个人信息接口 服务端校验token的有效性,校验通过,反正返回客户端需要的信息,校验失败,需要用户重新登录

本文我们以用户登录,获取用户的个人信息为例进行详细的完整版说明。
以上,便是我们本篇文章要实现的重点。先别激动,也别紧张,分析好了之后,细节部分我们再一步一个脚印走下去。

准备工作

你应该有一个api应用,如果你还没有,请先移步这里→_→Restful api基础 对于客户端,我们准备采用postman进行模拟,如果你的google浏览器还没有安装postman,请先自行下载 要测试的用户表需要有一个api_token的字段,没有的请先自行添加,并保证该字段足够长度 api应用开启了路由美化,并先配置post类型的login操作和get类型的signup-test操作 关闭了user组件的session会话

关于上面准备工作的第4点和第5点,我们贴一下代码方便理解

'components' => [ 'user' => [  'identityClass' => 'common/models/User', 'enableAutoLogin' => true, 'enableSession' => false, ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'enableStrictParsing' => true, 'rules' => [  [  'class' => 'yii/rest/UrlRule',  'controller' => ['v1/user'],  'extraPatterns' => [   'POST login' => 'login',   'GET signup-test' => 'signup-test',  ]  ], ] ], // ......],

signup-test操作我们后面添加测试用户,为登录操作提供便利。其他类型的操作后面看需要再做添加。

认证类的选择

我们在api/modules/v1/controllers/UserController中设定的model类指向 common/models/User类,为了说明重点这里我们就不单独拿出来重写了,看各位需要,有必要的话再单独copy一个User类到api/models下。

校验用户权限我们以 yii/filters/auth/QueryParamAuth 为例

use yii/filters/auth/QueryParamAuth;public function behaviors() { return ArrayHelper::merge (parent::behaviors(), [   'authenticator' => [   'class' => QueryParamAuth::className()   ]  ] );}            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表