2016-07-22 59 views
0

改變控制器名稱登錄我加了一個前綴管理和改變控制器Userscontroller的LoginController現在本地主機:8765 /管理員工作正常,但本地主機:8765 /管理/登入/ check_login sbut當我提交我的形式,它給我一個錯誤錯誤:請求的地址「/管理/登錄/查詢登錄」此服務器上未發現其中check_login是我的身份驗證行動無法使用admin前綴和cakephp3

路由器

Router::prefix('admin', function ($routes) { 
$routes->connect('/', ['controller' => 'Login', 'action' => 'display','login']); 
}); 

應用控制器

public function initialize() { 
    $this->loadComponent('Flash'); 
    $this->loadComponent('Auth', [ 
     'authenticate' => [ 
      'Form' => [ 
       'fields' => [ 
        'username' => 'username', 
        'password' => 'password' 
       ] 
      ] 
     ], 
     'loginAction' => [ 
      'controller' => 'Login', 
      'action' => 'check_login', 
      'prefix' => 'admin' 
     ], 
    ]); 

    // Allow the display action so our pages controller 
    // continues to work. 
    $this->Auth->allow(['display']); 

檢查登錄行動

public function check_login() { 
    if ($this->request->is('post')) { 
     $admin = $this->Auth->identify(); 
     if ($admin) { 
      $this->Auth->setUser($admin); 
      $result['status'] = 'success'; 
      echo json_encode($result); 
     } 
     $result['status'] = 'failure'; 
     $result['message'] = 'Your username or password is incorrect'; 
     echo json_encode($result); 
     die; 
    } 
} 

在此先感謝

+0

當您收到錯誤消息時,URL中是否包含自定義端口號? –

+0

是的,現在它正在工作,但現在在登錄操作時,$ this-> Auth-> identify()被讀取,它給出了一個內部服務器錯誤 –

+0

我更改了操作check_login登錄 –

回答

1

爲什麼你是否複雜?最簡單的方法:

  1. 創建Admin文件夾在你控制器應用程序文件夾。
  2. Inside - 創建UsersController.php並創建登錄方法。 Admin文件夾內的所有功能將僅在URL中使用Admin前綴。

下一頁 - 您可以將URL /管理/登錄映射到您的登錄使用下面的路由的用戶控制器()動作:

Router::prefix('admin', function ($routes) { 
    // Because you are in the admin scope, 
    // you do not need to include the /admin prefix 
    // or the admin route element. 
    $routes->connect('/login', ['controller' => 'Users', 'action' => 'login']); 
}); 

這是最簡單的方法。