yii中的http访问
来源:互联网 发布:唯品会抢购软件 编辑:程序博客网 时间:2024/05/22 17:03
yii restful
http
1,HttpBasicAuth
restful 下的controll
// 规则
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['authenticator'] = [
'class' => HttpBasicAuth::className(),
'auth'=>function ($username, $password) { //自定义的规则
return \app\models\User::findOne([
'name' => $username,
'pwd' => $password,
'category'=>'学生',
]);
}
];
return $behaviors;
}
/*
* 在actions中关闭除get即index的其他所有请求方式。
*/
public function actions()
{
$actions = parent::actions();
// 禁用"delete" 和 "create" 操作
unset($actions['view'], $actions['create'],$actions['update'],$actions['delete']); // 取消父类中的方法(针对 model的操作类型)
// 使用"prepareDataProvider()"方法自定义数据provider
$actions['index']['prepareDataProvider'] = [$this, 'prepareDataProvider']; //针对或者规定只能使用某一个方法进行访问
return $actions;
}
//注意 在做完了函数的逻辑之后添加返回值(视频资源还不懂)之后要设定返回response的基本信息
// $response = \Yii::$app->getResponse();//获得200 ok 响应的空壳
//$response->setStatusCode(201);
源码
public function authenticate($user, $request, $response)
{
$username = $request->getAuthUser();
$password = $request->getAuthPassword();
if ($this->auth) { //这个地方的auth用来控制是否按照以下的规则进行 所以返回必须是布尔值
if ($username !== null || $password !== null) {
$identity = call_user_func($this->auth, $username, $password);
if ($identity !== null) {
$user->switchIdentity($identity);
} else {
$this->handleFailure($response);
}
return $identity;
}
} elseif ($username !== null) { //定义第二次(之后)登录时的登录规则 只用AccessToken登录即可
$identity = $user->loginByAccessToken($username, get_class($this));
if ($identity === null) {
$this->handleFailure($response);
}
return $identity;
}
return null;
}
/**
* @inheritdoc
*/
public function challenge($response) // 定义了发送的报头的形式
{
$response->getHeaders()->set('WWW-Authenticate', "Basic realm=\"{$this->realm}\"");
}
二 如果是我自己写的话,我就不会用这种方式
原因有
1,url是访问服务器关键所在,但是避免不了的是要传送参数,与其这样调用这种方法的判断,自己直接做判断就可以了
2,传递参数的时候就可以传递安全访问参数,这个时候,参数的安全最高,无关乎post,get方法直接访问action啊,安全性就看你的验证多么强大了
3,综上 两种方法没有什么区别,但是在代码量上,和移动端的开发上的量就不同了。不过是换个位置传参而已
public function actions()
{
$actions = parent::actions();
// 禁用"delete" 和 "create" 操作
//unset($actions['view'], $actions['create'],$actions['update'],$actions['delete']);
unset($actions['index'], $actions['update'], $actions['create'], $actions['delete'], $actions['view']);
// 使用"prepareDataProvider()"方法自定义数据provider
//$actions['index']['prepareDataProvider'] = [$this, 'prepareDataProvider'];
return $actions;
}
public function actionCreate(){
//还要返回这个学生可以活着已经填了那些表的信息 选择表的时候做判断。
//教师的
$name=\Yii::$app->request->post('name');
$pwd=\Yii::$app->request->post('pwd');
$studentnumber = \Yii::$app->request->post('studentnumber'); // 判断是否违法
$model1 = new User();
$exist = $model1->checkexist($studentnumber);
if($exist == null)
{return null;}
else{
$user=$model1->checkstudent($name,$pwd);
if($user==null)
{return $user=null;}
return $user;
}
}
http
1,HttpBasicAuth
restful 下的controll
// 规则
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['authenticator'] = [
'class' => HttpBasicAuth::className(),
'auth'=>function ($username, $password) { //自定义的规则
return \app\models\User::findOne([
'name' => $username,
'pwd' => $password,
'category'=>'学生',
]);
}
];
return $behaviors;
}
/*
* 在actions中关闭除get即index的其他所有请求方式。
*/
public function actions()
{
$actions = parent::actions();
// 禁用"delete" 和 "create" 操作
unset($actions['view'], $actions['create'],$actions['update'],$actions['delete']); // 取消父类中的方法(针对 model的操作类型)
// 使用"prepareDataProvider()"方法自定义数据provider
$actions['index']['prepareDataProvider'] = [$this, 'prepareDataProvider']; //针对或者规定只能使用某一个方法进行访问
return $actions;
}
//注意 在做完了函数的逻辑之后添加返回值(视频资源还不懂)之后要设定返回response的基本信息
// $response = \Yii::$app->getResponse();//获得200 ok 响应的空壳
//$response->setStatusCode(201);
源码
public function authenticate($user, $request, $response)
{
$username = $request->getAuthUser();
$password = $request->getAuthPassword();
if ($this->auth) { //这个地方的auth用来控制是否按照以下的规则进行 所以返回必须是布尔值
if ($username !== null || $password !== null) {
$identity = call_user_func($this->auth, $username, $password);
if ($identity !== null) {
$user->switchIdentity($identity);
} else {
$this->handleFailure($response);
}
return $identity;
}
} elseif ($username !== null) { //定义第二次(之后)登录时的登录规则 只用AccessToken登录即可
$identity = $user->loginByAccessToken($username, get_class($this));
if ($identity === null) {
$this->handleFailure($response);
}
return $identity;
}
return null;
}
/**
* @inheritdoc
*/
public function challenge($response) // 定义了发送的报头的形式
{
$response->getHeaders()->set('WWW-Authenticate', "Basic realm=\"{$this->realm}\"");
}
二 如果是我自己写的话,我就不会用这种方式
原因有
1,url是访问服务器关键所在,但是避免不了的是要传送参数,与其这样调用这种方法的判断,自己直接做判断就可以了
2,传递参数的时候就可以传递安全访问参数,这个时候,参数的安全最高,无关乎post,get方法直接访问action啊,安全性就看你的验证多么强大了
3,综上 两种方法没有什么区别,但是在代码量上,和移动端的开发上的量就不同了。不过是换个位置传参而已
public function actions()
{
$actions = parent::actions();
// 禁用"delete" 和 "create" 操作
//unset($actions['view'], $actions['create'],$actions['update'],$actions['delete']);
unset($actions['index'], $actions['update'], $actions['create'], $actions['delete'], $actions['view']);
// 使用"prepareDataProvider()"方法自定义数据provider
//$actions['index']['prepareDataProvider'] = [$this, 'prepareDataProvider'];
return $actions;
}
public function actionCreate(){
//还要返回这个学生可以活着已经填了那些表的信息 选择表的时候做判断。
//教师的
$name=\Yii::$app->request->post('name');
$pwd=\Yii::$app->request->post('pwd');
$studentnumber = \Yii::$app->request->post('studentnumber'); // 判断是否违法
$model1 = new User();
$exist = $model1->checkexist($studentnumber);
if($exist == null)
{return null;}
else{
$user=$model1->checkstudent($name,$pwd);
if($user==null)
{return $user=null;}
return $user;
}
}
这个是直接做判断的。url后面必须加到action 才可以访问。之后内部判断是否违法
第一个访问的时候到controller 就行了 但是记得要加S
yii的基本的restful 参考 点击打开链接http://www.yiifans.com/forum.php?mod=viewthread&tid=2200
做判断的时候建议用postman
1 0
- yii中的http访问
- YII访问数据库(Yii Dao)
- YII访问数据库
- Yii访问数据库
- YII访问数据库
- Yii----访问控制器
- YII框架数据库访问
- android 的http 访问网站服务器(我用yii的)
- Yii之http缓存
- yii框架中的session和cookie设置、使用以及清空/改变默认访问的控制器
- yii中的几项基本操作(布局、指定访问方法、解决400错误)
- **YII** 系列四数据库访问
- YII访问地址初学(一)
- Yii学习笔记-数据库访问
- 16. Yii 2.0 http缓存
- 16. Yii 2.0 http缓存
- yii中的关联查询
- YII中的JQuery阐述
- JavaEE的sturt2的myeclipse结合tomcat的热部署问题
- mysql连接错误
- js 生成随机颜色
- 对博客的理解
- 500 error
- yii中的http访问
- 下拉框操作
- matlab实用程序(六)
- poj3254
- 6576
- 理解box-sizing属性border-box,content-box
- Kattis <Simon Says>
- 深入剖析装箱与拆箱机制
- stm32低功耗实验之待机模式