CakePHP 3 仅允许 REST index.json 和 and.json(无普通视图)与 Auth
CakePHP 3 allow only REST index.json and and.json (no normal views) with Auth
我根据博客教程创建了博客,我想保护文章列表,但我希望它可以跨 REST 访问,我已经激活 json 扩展。
一切正常。我可以添加和检索列表,但现在我想拒绝索引并从 Web 添加并且只能从 .json 到 public.
访问
我试过
public function beforeFilter(Event $event)
{
parent::beforeFilter($event);
$this->Auth->allow('index.json');
}
但这显然行不通。所有网页都像教程中一样受登录保护。 Android 应用程序应该可以访问 Web 服务(代码已准备就绪并且可以运行)。
谢谢!
当然那是行不通的,allow()
方法需要有效的方法名称,这就是身份验证组件关心的所有内容,method/action 名称,操作如何并不重要请求。
您尝试执行的操作要求您检查请求的类型,并根据结果允许操作。可以使用 Request::is()
.
检查请求类型
见Cookbook > Request & Response Objects > Checking Request Conditions
所以它可能和
一样简单
if ($this->request->is('json')) {
$this->Auth->allow(['index', 'add']);
}
我根据博客教程创建了博客,我想保护文章列表,但我希望它可以跨 REST 访问,我已经激活 json 扩展。
一切正常。我可以添加和检索列表,但现在我想拒绝索引并从 Web 添加并且只能从 .json 到 public.
访问我试过
public function beforeFilter(Event $event)
{
parent::beforeFilter($event);
$this->Auth->allow('index.json');
}
但这显然行不通。所有网页都像教程中一样受登录保护。 Android 应用程序应该可以访问 Web 服务(代码已准备就绪并且可以运行)。
谢谢!
当然那是行不通的,allow()
方法需要有效的方法名称,这就是身份验证组件关心的所有内容,method/action 名称,操作如何并不重要请求。
您尝试执行的操作要求您检查请求的类型,并根据结果允许操作。可以使用 Request::is()
.
见Cookbook > Request & Response Objects > Checking Request Conditions
所以它可能和
一样简单if ($this->request->is('json')) {
$this->Auth->allow(['index', 'add']);
}