xyhs 2016-03-22 00:49:15 3057次浏览 1条回复 0 1 0

看了网上一堆跨站的案例,很多都是抄袭来抄袭去,调试了好长时间也没解决问题,无奈下只有自己去慢慢研究,最后还是程序开发中一个习惯,遇到搞不定的bug就先放着,几天后,突然发现一切都解决了,也带了点运气成分,这个文中细说原因。 写出此文,想和把这个问题和搞透的人请教下,有些东西还没想透,有的时候莫名其妙的问题。 我的站分5个端

frontend vi.host.com
lawyerend law.host.com
userend   user.host.com
transend  trans.host.com
lawfirmend lawfirm.host.com

刚开始试着在主common/config/main.php 下配置 跨站代码 代码如下

'request' => [
    'cookieValidationKey' => 'asdfaasdfaf#@$#@%$#%#^#$^%#$DSGSDG#@#!@$#!241fa',
],
        
'user' => [
    'identityClass' => 'common\models\User',
    'enableAutoLogin' => true,
    'identityCookie' => ['name' => '__lawyer_identity', 'httpOnly' => true],
    'idParam' => '__User',
    'loginUrl' => ['/admin/login'],
],
        
'session' => [
    'cookieParams' => [
        'path' => '/',
        'domain' => '.'.DOMAIN,
        'httpOnly' => true,
    ],
],

一开始,死活调试不通,加了domain的情况下,去掉这个参数添加那个参数,都一点用都没,尝试了一系列的排列组合,下面就说下当时用userend测试跨站的登录情况 在common/config/main.php 下配置 userend/config/main.php 里面配置 跨站代码 在common/config/main.php 下不配置 userend/config/main.php 里面配置 跨站代码 在common/config/main.php 下配置 userend/config/main.php 里面不配置 跨站代码 ....等等 还删除修改添加一系列参数,都不管用,debug也不行。在google浏览器用开发者模式查看 resources/cookies 有的时候能看到 .host.com的value值,有的时候能看到 user.host.com的value值,但是就是 value死活不一样,不一样就无法统一登录,userend也无法登录上去。 实在没辙,歇息了几天,突然发现什么都解决了,开始想不明白是什么原因,后来突然想到,是不是session和cookie缓存的问题,就分别测试关闭浏览器,清理缓存,关闭并重启phpstudy下,发现果然如此; 具体原因我想应该是,在每次配置文件改变后,程序且运行了,会有些session和cookie残留,当你改下次配置文件的时候,之前的session和cookie并么有清理掉,所以导致N多的调试时间都浪费了(也有可能是phpstudy原因,没有apache测试过)。

觉得很赞
  • 回复于 2016-03-22 00:53 举报

    现在的配置是 common不放任何的user登录代码
    就frontend 和userend放

    'request' => [
        'cookieValidationKey' => 'asdfaasdfaf#@$#@%$#%#^#$^%#$DSGSDG#@#!@$#!241fa',
    ],
        
    'user' => [
        'identityClass' => 'common\models\User',
        'enableAutoLogin' => true,
        'identityCookie' => ['name' => '__lawyer_identity', 'httpOnly' => true],
        'idParam' => '__User',
        'loginUrl' => ['/admin/login'],
    ],
        
    'session' => [
        'cookieParams' => [
            'path' => '/',
            'domain' => '.'.DOMAIN,
            'httpOnly' => true,
        ],
    ],
    

    这段代码,在lawyerend里面 把domain都去掉,有的时候测试是ok的,有的时候有莫名其妙的问题。
    所有的登录全部公用 common\models\User 模型 不同的模块 根据账号 types类型来区别。
    现在的状况是 有的时候莫名其妙的还是会出现登录不了的情况。

    未完待续,看看苹果发不回去。。

您需要登录后才可以回复。登录 | 立即注册