CakePHP 3生产认证

时间:2015-06-14 21:17:44

标签: cakephp authentication

我已经完成了the CakePHP website的教程,为我的网站添加了身份验证(除了我的网站上不需要任何角色,只是管理员登录)。在我的机器上,整个身份验证工作以及我只能以管理员身份访问的页面。我已将文件夹和数据库复制到我的网站托管服务商,但我在登录时遇到了问题。

这就是我的代码:

config / routes.php 中我有:

Router::prefix('admin', function($routes) {
  $routes->connect('/', ['controller'=>'Users','action'=>'login']);
  $routes->fallbacks('InflectedRoute');
});
src / Controller / Admin / UsersController.php

中的

 namespace App\Controller\Admin;
 use App\Controller\AppController;
 use Cake\Event\Event;

 class UsersController extends AppController {

  public function beforeFilter(Event $event) {
    parent::beforeFilter($event);
    $this->Auth->allow(['logout']);
  }

  public function login(){
    if ($this->request->is('post')) {
        $user = $this->Auth->identify();
        if ($user) {
            $this->Auth->setUser($user);
            return $this->redirect($this->Auth->redirectUrl());
        }
        $this->Flash->error(__('Please check your username and password.'));
    }
  }
}

实体用户包含执行散列的方法:

protected function _setPassword($password)
{
    return (new DefaultPasswordHasher)->hash($password);
}

最后,在 Controller / AppController.php 中,我实现了以下功能,这应该允许每个登录用户访问所有页面。

class AppController extends Controller
{

    public function initialize()
    {
        parent::initialize();
        $this->loadComponent('Flash');
        $this->loadComponent('Auth', [
            'loginRedirect' => [
                'controller' => 'requests',
                'action' => 'index'
            ],
            'logoutRedirect' => [
                'prefix' => false,
                'controller' => '/'
            ]
        ]);

    }

    public function beforeFilter(Event $event)
    {
        parent::beforeFilter($event);
        if($this->request->session()->check('Auth.User.id')) {
           $this->layout = 'admin';
        } 
    }

    public function isAuthorized($user) 
    {
        return true;
    }
}

正如我所说,这适用于我的本地机器。但是,在服务器上,我总是收到以下错误:

  

您无权访问该位置。

我尝试了各种PHP版本,以确保错误不存在。使用打印输出,我可以看到我在if($user)方法中通过login()检查。但是,现在我真的不知道如何继续,我对可能的解决方案一无所知。我已经在webhoster的子域中安装了CakePHP - 这可能是个问题吗?

0 个答案:

没有答案