yii2项目实战-用户管理之登录与注册功能实现


作者:白狼 出处: 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
上一章节我们讲述了如何通过新建数据模型来配置yii2的user组件,但是课后有小伙伴发来问卷,为啥在创建user_backend数据表的时候销毁了 password_reset_token 字段呢?其实这个字段对后台管理基本没啥子用,你要是非要,也可以,这里只对该字段以及用途做一个说明,课后需要的可以自行实现。
该字段具有唯一性,其用途在于用户找回密码。且该字段具有时效性,过期时间参考common\config\params.php文件的user.passwordResetTokenExpire项配置,过期时间默认是1小时。注意哦,默认的找回密码是基于邮件且发送的链接内容包含该字段,用于点击链接跳转后可根据该字段获取到具体用户并实现用户密码的修改。因为看起来还是蛮繁琐的,如果你没听懂,可以在【小站】注册一个帐号,通过邮件找回密码测试一番。
因此,考虑到我们后台,无需这么繁琐,后面我们增加一个密码重置的功能,让用于自行修改密码即可。
说了那么多,我们接着上一章节,来说一说如何通过新建的数据表以及user组件来创建一个新的用户,以及如何实现新用户的登录机制。
其实也是so easy的,跟着步骤走,操作起来简单易学,一学就会,简直不能再6! 新用户的创建‘’ 打开 index.php?r=user-backend 页面,我们发现有一个创建的按钮,当然,如果我们真的这么创建了,创建的用户肯定是废的,因为肯定不能登录嘛!至少密码我们这里没有加密吧,对不对?
接下来我们就来实现添加一个新用户的操作,然后一并实现其登陆的操作。
①、我们将【创建】的按钮改为【添加新用户】,并修改其对应的链接地址
<?= Html::a('添加新用户', ['signup'], ['class' => 'btn btn-success']) ?>可以看到这里我们命名当前控制器的signup操作为添加新用户的操作,接着我们就去实现掉这个操作。
②、实现signup方法,注意哦,我们需要实现两步,分别是渲染添加用户的表单和处理表单提交的数据。
/** * create new user */ public function actionSignup () { $model = new \backend\models\SignupForm(); // 如果是post提交且有对提交的数据校验成功(我们在SignupForm的signup方法进行了实现) // $model->load() 方法,实质是把post过来的数据赋值给model // $model->signup() 方法, 是我们要实现的具体的添加用户操作 if ($model->load(Yii::$app->request->post()) && $model->signup()) { return $this->redirect(['index']); } // 渲染添加新用户的表单 return $this->render('signup', [ 'model' => $model, ]); }③、我们来看下渲染的表单文件signup.php,默认的视图文件存放在 views/user-backend/ 目录下,可以看到我们的表单页面是用bootstrap构建的,这样样式问题就不需要担心了。
<?php /* @var $this yii\web\View */ /* @var $form yii\bootstrap\ActiveForm */ /* @var $model \backend\models\SignupForm */ use yii\helpers\Html; use yii\bootstrap\ActiveForm; $this->title = '添加新用户'; $this->params['breadcrumbs'][] = $this->title; ?> <div class="site-signup"> <div class="row"> <div class="col-lg-5"> <?php $form = ActiveForm::begin(['id' => 'form-signup']); ?> <?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?> <?= $form->field($model, 'email') ?> <?= $form->field($model, 'password')->passwordInput() ?> <div class="form-group"> <?= Html::submitButton('添加', ['class' => 'btn btn-primary', 'name' => 'signup-button']) ?> </div> <?php ActiveForm::end(); ?> </div> </div> </div>您可能感兴趣的文章

