2018-01-31 14:17:25 3954次浏览 3条回答 0 悬赏 10 金钱

yii2框架用的是basic基本版!

问题
用户登录问题
配置文件

'user' => [
    'identityClass' => 'app\models\User',
    'loginUrl'      => ['admin/index/login'],
    'enableAutoLogin' => true,//这里不管是设置为true还是false,每次都自动登录
    'idParam' => '__user'
],

原来的代码

return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600*24*30 : 0);

修改后的代码 保存时间为0 ,但是还是每次都自动登录了

return Yii::$app->user->login($this->getUser(), 0);

登录代码用的原生的登录

if ($model->load(Yii::$app->request->post()) && $model->login()){
    return $this->redirect(["member/order"]);
}

打印了 $this->rememberMe 的值,勾选和不勾选的时候是正确的,都能正常获取!

现在问题是,每次不管是否勾选 rememberMe 还是把 enableAutoLogin 设置成 false;还是直接把 return Yii::$app->user->login($this->getUser(), 0); 注册的保存时间设置为零,在不退出和清楚cookie的情况下,关闭浏览器,甚至关闭电脑,当下次打开浏览器始终都是自动登录状态?请问高手们这个是什么问题啊,我用原生框架测试还是又这个问题?

我现在想实现的就是,在没有勾选的情况下 当关闭浏览器,或者关闭电脑后,下次打开的时候就需要重新登录,而不是自动登录,如果勾选了,可以按照登录注册的给与时间比如我给与 3600*24*2,就是两天自动登录,超过给定的时间就必须冲洗输入密码登录

分不多了,请高手们给我解答一下,谢谢你们!

最佳答案

  • 郝立国 发布于 2018-02-01 10:57 举报

    你用的是框架带的loginForm吗 如果是 里面有public $rememberMe = true; 改成false;就可以了
    还有就是你在接收数据验证的时候打印一遍从前台传递过来rememberMe看看是什么,如果不管你点不点都是true那你就可以找到你new 的模型去里面查看。
    说白了就是打印数据查看从哪得到的true,进行逆推

    觉得很赞
  • 回答于 2018-02-01 14:16 举报

    先把浏览器的cookie清一下试试

  • 回答于 2018-02-01 02:05 举报

    下载了 basic 版本使用了一下,不点击 remember me 则关闭浏览器之后没能保持登录状态,没能重现你说的问题。

您需要登录后才可以回答。登录 | 立即注册
landong66
见习主管

landong66

注册时间:2015-01-29
最后登录:2020-04-16
在线时长:9小时3分
  • 粉丝2
  • 金钱115
  • 威望0
  • 积分205

热门问题