yii2登录笔记

yii2高级模板中自带了登录注册功能,这里先记下登录功能的实现笔记
创建一张用户user表,里面需要根据user 的model文件进行更改一些字段名和添加,password_hash是指用yii2进行哈希加密后的密码串。auth_key使用用户注册时加的唯一标示,可以用来在浏览器记住用户登录有效期时间。

public function actionLogin(){
        $this->layout = 'login';
        $model = new LoginForm;
        $post = $model->load(Yii::$app->request->post());//验证是否有post数据
        // var_dump($post);
        // $user = $model->validate();//验证用户所输入的账号密码是否正确
        // var_dump($user);
        // $login = $model->login();//验证成功后,调用表单model的方法,model在调用数据模型的方法,添加用户成功登录的状态
        // var_dump($login);
        if($model->load(Yii::$app->request->post()) && $model->login()){

            $this->redirect('/document/add');
        }else{
            // echo '~';
            // var_dump($model->load(Yii::$app->request->post()));
            //  var_dump($model->login());
            //  echo '.';
            // var_dump(Yii::$app->user->isGuest);//判断用户是否已经登录
            // $userid=Yii::$app->user->getId();//获得登录用户的id
            //$username = Yii::$app->user->identity->username;//获得数据模型的username字段.
            // var_dump($userid);
            return $this->render('login',['model'=>$model]);
        }
        // $hash = Yii::$app->getSecurity()->generatePasswordHash('123456');//使用yii自带的哈希加密方式生成密码
        // var_dump($hash);
        // $result = Yii::$app->getSecurity()->validatePassword('123456', '$2y$13$BpU6wGouTHsOOxUkPjqwO.w8nelzJtZsYRE83l/VE0d8IPSro.qWm') ;以哈希加密用户输入的密码在和数据库的密码进行比较,返回的值是布尔型的。
        // var_dump($result);
        //$res = $model->getUser();

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的登录功能的实现。 首先,你需要创建一个控制器(Controller)来处理登录操作。在控制器里,你需要定义两个动作(Action),一个用于显示登录表单,一个用于提交登录表单并验证用户身份。 ```php <?php namespace app\controllers; use Yii; use yii\web\Controller; use app\models\User; use app\models\LoginForm; class SiteController extends Controller { public function actionLogin() { $model = new LoginForm(); if ($model->load(Yii::$app->request->post()) && $model->login()) { return $this->goBack(); } else { return $this->render('login', [ 'model' => $model, ]); } } public function actionLogout() { Yii::$app->user->logout(); return $this->goHome(); } } ``` 在上面的代码中,`actionLogin()` 方法用于显示登录表单和处理提交表单的逻辑,`actionLogout()` 方法用于注销当前用户。 接下来,你需要创建一个模型(Model)来表示用户信息和处理用户登录。 ```php <?php namespace app\models; use Yii; use yii\base\Model; class LoginForm extends Model { public $username; public $password; public $rememberMe = true; private $_user = false; public function rules() { return [ // username and password are both required [['username', 'password'], 'required'], // rememberMe must be a boolean value ['rememberMe', 'boolean'], // password is validated by validatePassword() ['password', 'validatePassword'], ]; } public function attributeLabels() { return [ 'username' => '用户名', 'password' => '密码', 'rememberMe' => '记住我', ]; } public function login() { if ($this->validate()) { return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600*24*30 : 0); } else { return false; } } public function getUser() { if ($this->_user === false) { $this->_user = User::findByUsername($this->username); } return $this->_user; } public function validatePassword($attribute, $params) { if (!$this->hasErrors()) { $user = $this->getUser(); if (!$user || !$user->validatePassword($this->password)) { $this->addError($attribute, '用户名或密码错误'); } } } } ``` 在上面的代码中,`LoginForm` 模型包含了用户登录所需的相关信息,包括用户名、密码和记住我选项。`rules()` 方法定义了表单数据的验证规则,`login()` 方法用于验证用户身份并实现登录逻辑,`getUser()` 方法用于获取用户信息,`validatePassword()` 方法用于验证用户密码是否正确。 最后,你需要创建一个视图(View)来显示登录表单。在视图里,你需要使用 Yii2 的 ActiveForm 组件来生成表单元素,并且使用 Yii2 提供的 $model 变量来绑定模型和表单元素。 ```php <?php use yii\helpers\Html; use yii\bootstrap\ActiveForm; $this->title = '登录'; ?> <div class="site-login"> <h1><?= Html::encode($this->title) ?></h1> <p>请填写以下信息登录:</p> <?php $form = ActiveForm::begin([ 'id' => 'login-form', 'layout' => 'horizontal', 'fieldConfig' => [ 'template' => "{label}\n<div class=\"col-sm-3\">{input}</div>\n<div class=\"col-sm-8\">{error}</div>", 'labelOptions' => ['class' => 'col-sm-1 control-label'], ], ]); ?> <?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?> <?= $form->field($model, 'password')->passwordInput() ?> <?= $form->field($model, 'rememberMe')->checkbox([ 'template' => "<div class=\"col-sm-offset-1 col-sm-3\">{input} {label}</div>\n<div class=\"col-sm-8\">{error}</div>", ]) ?> <div class="form-group"> <div class="col-sm-offset-1 col-sm-11"> <?= Html::submitButton('登录', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?> </div> </div> <?php ActiveForm::end(); ?> </div> ``` 在上面的代码中,使用了 Yii2 的 ActiveForm 组件来生成表单元素,并且使用了 Bootstrap 的样式。`$model` 变量用于绑定模型和表单元素。 这就是一个简单的登录功能的实现了。当用户填写登录表单并提交后,控制器会调用模型来验证用户身份,如果验证通过,则用户登录成功,否则会显示错误信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值