未能在Testlink中登录-未保存会话/cookie


Failed to login in Testlink - Not saving session / cookies

我在客户端服务器中部署Testlink时遇到问题。问题的根源似乎是它没有正确保存/检索会话中的信息,这会在安装和尝试日志记录过程中导致错误。

在安装过程中,一个变量存储在会话(installationType)中,指示它是新安装还是升级。这个变量的值为"new",但当从一个屏幕移动到另一个屏幕时,该值会丢失,假设我正在执行升级,无法继续。作为一种解决方法,我对代码进行了更改,在每个屏幕上将此变量设置为"new",这样我就正确地完成了安装过程。但当我尝试登录时,我发现了另一个问题:在输入用户数据和访问权限后,屏幕刷新并重新显示登录屏幕,没有任何错误消息(事实上,日志显示登录成功)。此行为与禁用浏览器中的cookie相同。

相同版本的Testlink(1.9.14)已在具有相同配置的本地服务器上顺利安装:

  • Ubuntu:14.04.1(64位)
  • Apache:2.4.7
  • PHP 5.5.9-1ubuntu4.16
  • MySQL:5.5.49

不同的是,我们的Ubuntu安装在Debian的虚拟机上,而Ubuntu客户端部署在Azure中。

我比较了一台机器和另一台机器上的php.ini配置,没有发现显著的差异。比较phpinfo()显示的信息,我都没有发现任何相关的信息(如果需要,可以在这里附上两者),但我在本地服务器的"PHP变量"部分看到了这个cookie:

COOKIE["TESTLINKUSERAUTHCOOKIE"]

此cookie不会出现在客户端服务器中(我想登录后不会创建)。

我的猜测是,Azure管理面板中有一些东西(我无权访问)需要配置,就像打开端口需要在iptables和Azure中完成一样。

任何建议都将不胜感激。

谜团已解决。这个问题与Azure无关,而是与自己的服务器配置有关。

在将Apache和PHP的所有配置文件与新安装进行比较后,我发现:

/etc/apache2/站点已启用/000 default.conf

<IfModule mod_headers.c>
    Header set X-UA-Compatible "IE=edge"
    Header set X-Frame-Options "DENY"
    # Commented out, because fcm4 use external JavaScript
    # Header set Content-Security-Policy "script-src 'self'; object-src 'self'"
    Header always set Strict-Transport-Security "max-age=16070400; includeSubDomains"
    Header set X-Content-Type-Options "nosniff"
    Header set X-XSS-Protection "1; mode=block"
    Header unset X-Powered-By
    Header unset ETag
    Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
    Header set Pragma "no-cache"
    Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
    Header set X-Permitted-Cross-Domain-Policies "master-only"
    Header edit Set-Cookie ^(.*)$ "$1;HttpOnly;Secure"
    <FilesMatch "'.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|webmanifest|woff2?|xloc|xml|xpi)$">
        Header unset X-UA-Compatible
        Header unset X-Frame-Options
        Header unset Content-Security-Policy
        Header unset X-XSS-Protection
    </FilesMatch>
</IfModule>

导致这种行为的线路是:

  • 标题集X-Frame-Options"DENY"
  • 页眉编辑设置Cookie^(.*)$"$1;HttpOnly;Secure"

评论出来后,一切都好。

Php会话问题通常与Apache/Php使用的临时文件夹有关。

我想Testlink实现了一个非常经典的基于cookie的会话系统。按照本文操作,以确保正确配置会话处理。

https://support.qualityunit.com/021373-How-To-Enable-Session-Support-for-PHP

你可能也对这个链接感兴趣。这是一个关于在Azure机器上安装Testlink的分步指南:

http://thusharapriyantha.blogspot.com.es/2015/04/install-testlink-1913-stormbringer-in.html?m=1

走运。。。亲切问候