【问题标题】:Different Session for Cakephp PrefixCakephp 前缀的不同会话
【发布时间】:2017-06-07 15:13:01
【问题描述】:

我被一件简单的事情扼杀了: 如何告诉 Cake 为不同的前缀(路由)使用不同的 Session 配置。

我有主域 www.domain.tdl,我不希望前缀 couriers (www.domain.tdl/couriers) 使用相同的会话配置以避免身份验证问题:主域和前缀使用不同的认证配置。

所以,在我的 App.php 中,会话配置是:

   'Session' => [
        'defaults' => 'cake',
        'timeout' => 24 * 60, //in minutes,
        'cookie' => 'app_bo',
//        "cookiePath" => "/mrbo", (tried with or without)
        'ini' => [
            "session.name" => "MR_BO",
        ]
    ],

我想我可以更改前缀的 AppController 中的配置: src/Controller/Couriers/AppController.php

    Configure::write('Session', [
        'defaults' => 'cake',
        'timeout' => 24 * 60, //in minutes,
        'cookie' => 'app_courier',
        "cookiePath" => "/mrcourier",
        'ini' => [
            "session.name" => "MR_COURIER",
        ]
    ]);
    ini_set('session.cookie_name', 'app_courier');
    ini_set('session.cookie_path', '/mrcourier');
    ini_set('session.name', 'MR_COURIER');

仅使用 Configure::write 不起作用,这就是我添加 ini_set 的原因(似乎它只更新了内部 CakePhp 配置)。

这样做,它的工作和不工作。确实,我看到域和前缀使用的不一样,但是当我尝试在前缀页面登录时,什么都没有,它重定向到自己。

我认为这是因为 CakePHP 在我的前缀 AppController 中的设置之前在内部使用了 Session。

编辑 这是Auth组件加载:(前缀的那个是一样的,只是控制器型号/控制器改变)

 $this->loadComponent('Auth', [
            'authorize' => ['Controller'],
            'authenticate' => [
                'Custom' => [
                    'passwordHasher' => [
                        'className' => 'Legacy',
                    ],
                    'userModel' => 'Establishments',
                    'fields' => array('username' => 'login', 'password' => 'password'),
                    "salt" => "salt" // Relative field for SALT
                ],
            ],
            'loginAction' => [
                'controller' => 'establishments',
                'action' => 'login'
            ],
            'loginRedirect' => [
                'controller' => 'pages',
                'action' => 'dashboard'
            ],
            'logoutRedirect' => [
                'controller' => 'establishments',
                'action' => 'login',
            ]
        ]);

【问题讨论】:

  • 能否发布您的身份验证配置,这可能会有所帮助
  • 对不起,我不在。刚做了!但我不认为它在这里相关。

标签: php session cakephp cakephp-3.0


【解决方案1】:

在您的身份验证配置中,使用storage 参数更改Session 设置。为每个配置使用不同的密钥

$this->loadComponent('Auth', [
        'authorize' => ['Controller'],
        'storage' => ['className' => 'Session', 'key' => 'Auth.Admin'],
         /* ... */
    ]
);

【讨论】:

    猜你喜欢
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    • 2011-06-09
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多