cakephp - AppController 类在子目录 Cakephp 3 上不起作用
问题描述
我正在使用创建 REST Apicakephp-jwt-auth
但未调用我在子文件夹中创建的 AppController。
我在 Ca/Api 代码中的 App 控制器代码
<?php
namespace App\Controller\Ca\Api;
use Cake\Controller\Controller;
use Cake\Event\Event;
class AppController extends Controller
{
public function initialize()
{
parent::initialize();
$this->loadComponent('RequestHandler');
$this->loadComponent('Auth', [
'storage' => 'Memory',
'authenticate' => [
'Form' => [
'fields' => ['username' => 'email'],
],
'ADmad/JwtAuth.Jwt' => [
'parameter' => 'token',
'userModel' => 'Users',
'fields' => [
'username' => 'id'
],
'queryDatasource' => true
]
],
'unauthorizedRedirect' => false,
'checkAuthIn' => 'Controller.initialize'
]);
$this->loadComponent('BryanCrowe/ApiPagination.ApiPagination', [
'key' => 'paging',
'aliases' => [
'page' => 'currentPage',
'current' => 'resultCount'
],
'visible' => [
'currentPage',
'resultCount',
'prevPage',
'nextPage',
'pageCount',
'page',
]
]);
}
public function beforeFilter(Event $event) {
parent::beforeFilter($event);
}
}
还有我的路线文件:
Router::prefix('ca/api', function ($routes) {
$routes->setExtensions(['json']);
$routes->connect('/login', ['controller' => 'Login', 'action' => 'login', "prefix" => "ca/api"]);
$routes->connect('/dashboard', ['controller' => 'Dashboard', 'action' => 'home', 'prefix' => "ca/api"]);
$routes->fallbacks('InflectedRoute');
});
我的应用程序控制器类没有被调用,我不明白我在哪里做错了。
解决方案
你可以像这样创建控制器
<?php
namespace App\Controller\Api;
use Cake\Controller\Controller;
use Cake\Event\Event;
class AppController extends Controller
{
public function initialize()
{
parent::initialize();
$this->loadComponent('RequestHandler');
$this->loadComponent('Auth', [
'storage' => 'Memory',
'authenticate' => [
'Form' => [
'scope' => ['Users.group_id' => 1]
],
'ADmad/JwtAuth.Jwt' => [
'parameter' => 'token',
'userModel' => 'Users',
'fields' => [
'username' => 'id'
],
'queryDatasource' => true
]
],
'unauthorizedRedirect' => false,
'checkAuthIn' => 'Controller.initialize'
]);
}
}
和其他这样的控制器
<?php
namespace App\Controller\Ca;
use Cake\Event\Event;
use Cake\Http\Exception\UnauthorizedException;
use Cake\Utility\Security;
use Firebase\JWT\JWT;
use Cake\Http\ServerRequest;
use Cake\I18n\Time;
use Aws\S3\S3Client;
use League\Flysystem\AwsS3v3\AwsS3Adapter;
use League\Flysystem\Filesystem;
use Cake\Http\Exception\NotFoundException;
class DashboardController extends AppController
{
public function initialize()
{
parent::initialize();
}
public function home()
{
pr("hiiih");
}
}
记住不要使用
**
使用应用\控制器\应用控制器;
**
当您在子文件夹中创建 AppController
有关更多信息,请阅读本教程:- https://trinitytuts.com/secure-cakephp-web-services-using-jwt/
推荐阅读
- reactjs - 如何对循环返回的jsx的元素进行换行?
- javascript - 在 Vue.js 文件中使用 JS/JQuery
- python - tflite 转换;遇到未解决的自定义操作:TensorArrayV3.Node
- docker - Docker 堆栈/服务不起作用,如何调试?
- single-sign-on - 我们是否需要所有 AD 用户的 keytab 条目以进行基于 kerberos 的身份验证?
- python - 将坐标 [x1,y1,z1, ...,] 的平面 c_long_Array 打包到 [(x1,y2,z3), ...] 元组列表中的最快方法
- javascript - 如何将 ethers.js 与元掩码连接起来?
- asp.net - 未检测到 OWIN 启动类
- android - 颤振 - 错误:“PermissionStatus”类型的值不能分配给“bool”类型的变量
- python - 在 Google Cloud Function 中运行 Scrapy 蜘蛛