Yii2 延迟创建和删除会话:Android webView

Yii2 延迟创建和删除会话:Android webView,yii2,android-webview,Yii2,Android Webview,我的网站使用了Yii2作为一个框架,在那里我使用了“Dektrium user”模块来实现注册和认证。在配置中,我将autologin属性设置为“true” 当我在我的网站上注册(通过webView打开)时,会话打开,我保持登录状态,一切正常,但当我关闭应用程序并再次打开它时-我看到登录表单,我需要再次输入注册数据。但是,如果我等待(大约30秒-1分钟),然后关闭应用程序-会话将被保存,并且我可以再次打开应用程序并使用,而无需输入我的登录名并通过 与注销相关的情况也一样:如果我单击“注销”,然后

我的网站使用了
Yii2
作为一个框架,在那里我使用了
“Dektrium user”
模块来实现注册和认证。在配置中,我将
autologin
属性设置为
“true”

当我在我的网站上注册(通过
webView
打开)时,会话打开,我保持
登录状态,一切正常,但当我关闭应用程序并再次打开它时-我看到
登录表单
,我需要再次输入注册数据。但是,如果我等待(大约30秒-1分钟),然后关闭应用程序-会话将被保存,并且我可以再次打开应用程序并使用,而无需输入我的
登录名
并通过

注销
相关的情况也一样:如果我单击
“注销”
,然后很快关闭
webView
应用程序,然后再次打开-我仍然
登录

最奇怪的是,在
iPhone
webView
中,一切都运行良好。当然,我试图通过浏览器重现这个bug,没有
webView
——它们也都工作得很好

也许有人有一些想法,为什么
webView
可以
延迟“冻结”
会话?

关于登录()
如果
$enableSession
为真:

  • 身份信息将存储在会话中,并在中可用 下一个请求
  • 如果
    $duration==0
    :只要会话 保持活动状态或直到用户关闭浏览器
  • 如果
    $duration>0
    :只要会话保持活动状态,还是只要会话保持活动状态?作为 cookie在以下情况下保持有效:
    $duration
    ,以秒为单位
    $enableAutoLogin
    已设置为
    true
您需要为
Yii::$app->user->login()使用第二个参数
定义用户可以保持登录状态的秒数,默认为
0

//keep the cookie duration valid for 120 seconds or 2 minutes
Yii::$app->user->login($user,120);
由于您已将
$enableAutoLogin
设置为
true
,因此不会忽略此参数,并且会使用默认值
0
,并且在您关闭应用程序时会立即清除会话。有关更多详细信息,请参阅

对于
Dektrium用户
您正在使用的值是在模块的
LoginForm
模型中设置的,它使用
rememberMe
属性

Yii::$app->getUser()->login($this->user, $this->rememberMe ? $this->module->rememberFor : 0);
默认为
false
,并与登录表单上的
复选框一起使用,以将此属性设置为true

 /** @var string Whether to remember the user */
    public $rememberMe = false;
因此,这意味着如果您没有使用登录表单上的
rememberMe
复选框登录会话,那么一旦注销或窗口关闭,cookie将在
0
秒内保持有效

您可以将
else
零件值从
0
设置为任何自定义值,如
60
,持续1分钟

Yii::$app->getUser()->login($this->user, $this->rememberMe ? $this->module->rememberFor : 60);
或者(我不喜欢这部分)

您可以设置
public$rememberMe=true以便在未注销时始终通过两周的默认值进行记忆。
如果您不想要默认的
记忆值(2周),也可以在配置的
模块下的模块设置中配置自定义值


您正在使用
dektrium user
您对
LoginForm
中的
Yii::$app->user->login()
使用的值是什么,因为它使用模块
rememberFor
属性进行传递,如果设置,则默认值为2周。我刚刚删除了我在这里发布的一个答案。你能确认这些吗?穆罕默德,谢谢你这么全面的回复,但你描述了一些一般设置,比如“回忆者”=>3000。我已经实现了这个功能,它在所有流行的浏览器中都运行良好,不包括
Android webView
。只在那里观察到虫子。
'components'=>[
     'user'=>[
         'rememberFor'=>3000,