yii2项目拭魅战之restful api授权验证详解
副问题[/!--empirenews.page--]
媒介什么是restful气魄威风凛凛的api呢?我们之前有写过来先容其观念以及根基操纵。 既然写过了,那本日是要说点什么吗? 这篇文章首要针对现实场景中api的陈设来写。 我们本日就来大大的侃侃那些年api碰着的授权验证题目!独家干活,假如看完有所受益,记得不要健忘给我点赞哦。 营业说明我们先来相识一下整个逻辑
本文我们以用户登录,获取用户的小我私人书息为例举办具体的完备版声名。 以上,即是我们本篇文章要实现的重点。先别感动,也别求助,说明好了之后,细节部门我们再一步一个脚迹走下去。 筹备事变
关于上面筹备事变的第4点和第5点,我们贴一下代码利便领略 [ 'user' => [ 'identityClass' => 'commonmodelsUser','enableAutoLogin' => true,'enableSession' => false,],'urlManager' => [ 'enablePrettyUrl' => true,'showScriptName' => false,'enableStrictParsing' => true,'rules' => [ [ 'class' => 'yiirestUrlRule','controller' => ['v1/user'],'extraPatterns' => [ 'POST login' => 'login','GET signup-test' => 'signup-test',] ],] ],// ...... ],signup-test操纵我们后头添加测试用户,为登录操纵提供便利。其他范例的操纵后头看必要再做添加。 认证类的选择我们在 校验用户权限我们以 { return ArrayHelper::merge (parent::behaviors(),[ 'authenticator' => [ 'class' => QueryParamAuth::className() ] ] ); } 云云一来,那岂不是全部会见user的操纵都必要认证了?那不可,客户端第一个会见login操纵的时辰哪来的token, 这样login操纵就无需权限验证即可会见了。 添加测试用户为了停止让客户端登录失败,我们先写一个简朴的要领,往user表内里插入两条数据,便于接下来的校验。 UserController增进signupTest操纵,留意此要领不属于讲授范畴之内,我们仅用于利便测试。 generateAuthKey(); $user->setPassword('123456'); $user->username = '111'; $user->email = '111@111.com'; $user->save(false);return [ 如上,我们添加了一个username是111,暗码是123456的用户 登录操纵假设用户在客户端输入用户名和暗码举办登录,处事端login操纵着实很简朴,大部门的营业逻辑处理赏罚都在 use apimodelsLoginForm; setAttributes(Yii::$app->request->post()); if ($user = $model->login()) { if ($user instanceof IdentityInterface) { return $user->api_token; } else { return $user->errors; } } else { return $model->errors; } }登录乐成后这里给客户端返回了用户的token,再来看看登录的详细逻辑的实现 新建apimodelsLoginForm.PHP use Yii;use yiibaseModel; use commonmodelsUser; /**
private $_user; const GET_API_TOKEN = 'generate_api_token'; public function init () /**
/**
(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |