CakePHP4-如何使用身份验证插件创建多个用户登录?

时间:2020-10-21 08:04:22

标签: authentication cakephp cakephp-4.x

我正在开发的应用程序中有两种类型的用户。 Users(表users.sql)用于前端用户,AdminUsers(表admin_users.sql)用于管理。

在CakePHP3中,我使用AuthComponent中的AppController解决了以下问题:

public function initialize()
{
    parent::initialize();

    // ...

    //user login
    if (!empty($this->request->params['prefix']) AND
        $this->request->params['prefix'] == 'admin'
    ) {
        $this->setAdminLogin();
    }else{
        $this->setUserLogin();
        $this->Auth->allow();
    }

    // ...
}
//frontend users
public function setUserLogin()
{
    $this->loadComponent('Auth', [
        'authorize' => ['Controller'],
        'loginAction' => [
            'controller' => 'Users',
            'action' => 'login'
        ],
        'loginRedirect' => [
            'controller' => 'Users',
            'action' => 'edit'
        ],
        'logoutRedirect' => [
            'controller' => 'Users',
            'action' => 'login'
        ],
        'authError' => false,
        'authenticate' => [
            'Xety/Cake3CookieAuth.Cookie' => [
                'userModel' => 'Users',
                'scope' => ['Users.active' => 1],
                'fields' => ['username' => 'email','password' => 'password'],
            ],
            'Form' => [
                'userModel' => 'Users',
                'scope' => ['Users.active' => 1],
                'fields' => ['username' => 'email','password' => 'password'],
                'passwordHasher' => [
                    'className' => 'Fallback',
                    'hashers' => ['Default']
                ]
            ],
        ],
        'storage' =>  ['className' => 'Session', 'key' => 'Auth.User']
    ]);
}
//admin users
public function setAdminLogin()
{
    $this->loadComponent('Auth', [
        'authorize' => ['Controller'],
        'loginAction' => [
            'controller' => 'AdminUsers',
            'action' => 'login',
        ],
        'loginRedirect' => [
            'controller' => 'AdminHelps',
            'action' => 'index'
        ],
        'logoutRedirect' => [
            'controller' => 'AdminUsers',
            'action' => 'login'
        ],
        'authError' => false,
        'authenticate' => [
            'Form' => [
                'userModel' => 'AdminUsers',
                'scope' => ['AdminUsers.active' => 1],
                'fields' => ['username' => 'email','password' => 'password'],
                'passwordHasher' => [
                    'className' => 'Fallback',
                    'hashers' => ['Default']
                ]
            ],
        ],
        'storage' =>  ['className' => 'Session', 'key' => 'Auth.AdminUser']
    ]);
}

如何在带有身份验证插件的CakePHP4版本中执行相同的操作?如何创建多用户登录?

0 个答案:

没有答案