yii 校验登录(场景)
来源:互联网 发布:java string split n 编辑:程序博客网 时间:2024/06/06 06:40
如何使用yii\web\User类进行校验登录呢?请看下面内容:
1.如何与yii\web\User类进行关联呢?
首先你要在模型中实现一个接口:yii\web\IdentityInterface.
class User extends \app\base\core\BaseActiveRecord implements \yii\web\IdentityInterface//实现接口
2.如何进行登录校验呢?
在模型中添加如下代码:
public function login(){ if(!$this->validate()){ return false; } $user = User::findOne(['username'=>$this->username,]);//通过用户输入的用户名重表中选出数据 if($user !== null){ if($this->validatePassword($this->psd,$user->password_hash)){ //密码校验,第一个参数为用户输入的密码,第二个为通过用户名选出来用户原本的hash加密的密码 Yii::$app->user->login($user,$this->rememberMe ? 3600*24*30 : 0);//rememberMe是“是否记住我”的选项值为bool型 //这是User类中的方法,第一个参数必须是IdentityInterface的实例。第二个参数就是你的cookie存活时间 return true; } return false; }else{ return false; } }
3.控制器中代码如下:
public function actionLogin() { if (!Yii::$app->user->isGuest) { //此处与以上的user为yii\web\User的实例 return $this->goHome(); } $model = new User(); $ret = $model->load(Yii::$app->request->post()); $model->scenario = 'login';//为登录设置场景,看后面的分析 if($ret){ $model->psd = Yii::$app->request->post()['User']['psd'];//之所以如此赋值我也不知道为何我定义的变量通过load()方法赋值不了 $model->rememberMe = Yii::$app->request->post()['User']['rememberMe']; if ($model->login()) { return $this->goBack(); } } return $this->render('login', [ 'model' => $model, ]); }
4.关于场景的说明:
4.1以下就是我在模型中分定义的场景:
public function scenarios() { //默认场景,所有字段 $parent = parent::scenarios(); // TODO: Change the autogenerated stub $parent['login']=['username','psd']; $parent['register']=['username','psd','email']; return $parent; }
就是对你要校验的模型实例设置一个场景,那么它经过rules方法时只校验你场景中设定的字段。我此处的登录场景只校验‘username',与'psd'.
4.2如何使用
正如上述控制器中的那样。
$model->scenario = 'login'.这样就为这个实例设置了场景。
1 0
- yii 校验登录(场景)
- yii场景
- yii登录
- yii ajaxfrom 校验
- Yii 理解场景
- Yii的场景
- 登录场景
- yii setScenario场景验证问题
- Yii 的登录流程
- Yii 的登录流程
- yii 登录表单
- Yii 登录流程
- Yii 的登录流程
- Yii 的登录流程
- Yii 简单登录操作
- Yii 用户登录验证
- Yii 用户登录验证
- Yii----登录主件
- leetcode Majority Element
- 把字符串转换成整数
- 畅通工程续
- 160727
- Unity-屏幕适配UGUI与3D/2D场景
- yii 校验登录(场景)
- HTML5学习(三)—2
- 通过经纬度获取地名
- 光纤激光端面泵浦或者侧面泵浦
- 用户注册画面设计(一): 使用bootstrap2.0设计用户注册画面
- 160728
- caffe编译的问题解决:“cublas_v2.h: No such file or directory”
- leetcode 376. Wiggle Subsequence 解题报告
- django CreateView 使用方式