我已经设置了基于cookie的登录,就像那个人in this thread一样。我可以看到auth键总是正确生成。我可以在DB和cookie中看到它。 Cookie也有适当的到期日期。不过,我从未自动登录过。我设置了public function select_all($table_name, $where){
$db_connect = new db_connect();
$con = $db_connect->connect();
if(!$con){
echo "Connection error";
}else{
$query = mysqli_query($con,"select * from ".$table_name." where ".$where." ");
if(!$query){
echo "Error in your query".mysqli_error($query);
}else{
$result = mysqli_fetch_array($query);
return $result;
}
}
}
,所有其他方法都是默认的。所以它应该工作。我读到某个地方,调用'enableAutoLogin' => true
应该触发cookie登录,但事实并非如此。有什么建议吗?
答案 0 :(得分:0)
您是否设置了登录方式的持续时间?
方法User::login()有第二个参数名为“duration”。默认情况下为0
。这意味着只要会话保持活动状态,身份信息就会存储在会话中。如果您想要自动登录,请设置持续时间> 0
答案 1 :(得分:0)
问题可能是由从Cookie中检索到的数据引起的。 User :: findIdentity中的$ id参数不是MongoId或字符串而是数组。最简单的解决方案是覆盖方法,例如:
public static function findIdentity($id)
{
if(!empty($id) && is_array($id))
$id = new \MongoId($id['$id']);
return static::findOne($id);
}