验证码正常显示,点击也能更换,dubgger里查session里也看到了数据,post过来的数据有的,然而就是显示所填的验证码不正确,
查了一下确实是$this->validate(),验证的时候不通过,验证码的比较,应该是session里存的和post过来的一样那就对了哇?
然后我该怎么查原因??抓狂啊,思路,求思路!
yii2学的挺累的,附一下代码
/* \vendor\dektrium\yii2-user\models\LoginForm.php */ public $captcha; public function rules()//作者的rules格式不和yii2标准的写法一样,为嘛? { return [ 'requiredFields' => [['login', 'password','captcha'], 'required'], 'captchalPattern'=>['captcha', 'captcha'], 'loginTrim' => ['login', 'trim'], . . . . /* \vendor\dektrium\yii2-user\controllers\SecurityController.php*/ public function behaviors() { return [ 'access' => [ 'class' => AccessControl::className(), 'rules' => [ ['allow' => true, 'actions' => ['login', 'auth','captcha'], 'roles' => ['?']],//没这个验证码不显示 ['allow' => true, 'actions' => ['login', 'auth', 'logout'], 'roles' => ['@']], ]]]; } /** @inheritdoc */ public function actions() { return [ 'captcha' => [ 'class' => 'yii\captcha\CaptchaAction', 'minLength' => 4, 'maxLength' => 4 ], ..... ]; } /* \vendor\dektrium\yii2-user\views\security\login.php */ use yii\captcha\Captcha; . . . . <?= $form->field($model, 'captcha')->widget(Captcha::className(), [ 'captchaAction' => ['/site/captcha'] ]) ?> . . . .
自己到源码中看一下打印出来 看一下吗 yii/captcha/captchaAction::validate 这个方法######发现原因了,session存的验证码和POST过来的验证码不在一个节拍,session的验证码貌似是上一次的验证码。具体我查查###### 感觉yii2-user做了2次验证,导致的问题
vendor\dektrium\yii2-user\controllers\SecurityController.php
$model = \Yii::createObject(LoginForm::className()); $this->performAjaxValidation($model);//第一次 if ($model->load(Yii::$app->getRequest()->post()) && $model->login()) {//第二次模型那去验证$model->login(), return $this->goBack(); }
######我也感觉是这个二次验证。 因为输入验证码,移出焦点后,会自动ajax验证一次。这时验证是没有错的。但通过查看后端的session,其实这时,session中的验证码已经被刷新了,产生新的验证码。 所以提交的时候,验证码就不对了。还是没有找到解决方法。 谁来解答一下!######我的也是验证码失败,用的是basic 在新建立的module 使用验证码出错,一直验证错误...直接在结构上使用没有问题######回复 @水人 : 继承BaseModel######回复 @燧人氏 : 你的model,继承的是BaseModel,就行######回复 @木易水羊888 : 问题怎么解决的??######回复 @木易水羊888 : 什么东西继承model类而不是ActiveRecord ?######回复 @燧人氏 : 继承model类而不是ActiveRecord
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。