YII2框架中自定义用户认证模型,完成登陆和注册操作示例
本文实例讲述了YII2框架中自定义用户认证模型,完成登陆和注册操作。分享给大家供大家参考,具体如下:
有些时候我们需要自已定义用户类,操作自已建的用户表,来完成登陆和注册功能。
用户表结构如下,当然可以根据自已的需要添加或删除:
CREATETABLE`tb_user`( `id`int(11)unsignedNOTNULLAUTO_INCREMENTCOMMENT'用户ID', `name`varchar(32)DEFAULT''COMMENT'用户名', `pwd`varchar(64)DEFAULT''COMMENT'密码', `head_img`varchar(256)DEFAULT''COMMENT'图像', `sex`tinyint(1)DEFAULT'0'COMMENT'性别(0:男,1:女)', `age`tinyint(3)DEFAULT'0'COMMENT'年龄', `auth_key`varchar(32)DEFAULT''COMMENT'认证密钥', PRIMARYKEY(`id`) )ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COMMENT='用户表';
然后我们在models下创建MyUser.php,代码如下:
$token]); } //通过用户名,返回用户实例 publicstaticfunctionfindByUsername($name) { returnstatic::findOne(['name'=>$name]); } //获取用户ID publicfunctiongetId() { return$this->id; } //获取用户认证密钥 publicfunctiongetAuthKey() { return$this->auth_key; } //生成cookie中的authkey publicfunctiongenerateAuthKey() { $this->auth_key=Yii::$app->security->generateRandomString(32); $this->save(false); } //验证用户认证密钥 publicfunctionvalidateAuthKey($authKey) { return$this->getAuthKey()===$authKey; } //验证密码是否正确,当然我们也可以自已定义加密解密方式 publicfunctionvalidatePassword($password) { returnYii::$app->security->validatePassword($password,$this->pwd); } }
创建完我们自已的用户模型类后,我们需要在配置文件中修改成我们自已的,在config\web.php
'components'=>[ //... 'user'=>[ 'identityClass'=>'app\models\MyUser', 'enableAutoLogin'=>true, ], ];
然后我们创建一个登陆页面
表单提交 "method="post"> 姓名:
密码:
request->csrfToken;?>">