Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax symfony2安全-禁用登录路径并显示禁止_Ajax_Symfony_Symfony 2.4_Symfony Security - Fatal编程技术网

Ajax symfony2安全-禁用登录路径并显示禁止

Ajax symfony2安全-禁用登录路径并显示禁止,ajax,symfony,symfony-2.4,symfony-security,Ajax,Symfony,Symfony 2.4,Symfony Security,当用户试图访问没有令牌的页面时,我试图阻止重定向到登录页面,我有单页应用程序,我只将ajax请求置于防火墙下,当用户在没有令牌的情况下执行ajax时,我希望ajax返回禁止的异常,以便我能够在客户端捕获它 当前ajax返回“find”,因为请求被重定向到登录页面 到目前为止,我还没有在cookbook中找到解决方案我不想使用api令牌,只发送一个异常,而不是重定向到登录您需要定义防火墙的入口点,以便返回未经授权的响应。有关入口点的信息可以在文档中找到。如果将来有人要求,我将在这里复制这一段 当用

当用户试图访问没有令牌的页面时,我试图阻止重定向到登录页面,我有单页应用程序,我只将ajax请求置于防火墙下,当用户在没有令牌的情况下执行ajax时,我希望ajax返回禁止的异常,以便我能够在客户端捕获它

当前ajax返回“find”,因为请求被重定向到登录页面


到目前为止,我还没有在cookbook中找到解决方案我不想使用api令牌,只发送一个异常,而不是重定向到登录

您需要定义防火墙的
入口点
,以便返回未经授权的响应。有关入口点的信息可以在文档中找到。如果将来有人要求,我将在这里复制这一段

当用户根本没有经过身份验证时(即,当令牌存储还没有令牌时),将调用防火墙的入口点来“启动”身份验证过程。入口点应该实现AuthenticationEntryPointInterface,它只有一个方法:start()。此方法接收当前请求对象和触发异常侦听器的异常。该方法应返回一个响应对象。例如,这可能是包含登录表单的页面,或者在基本HTTP身份验证的情况下,是带有WWW Authenticate标头的响应,该标头将提示用户提供其用户名和密码

因此,为了做到这一点,您必须创建一个将被定义为服务的类

应该是这样的:

namespace MyBundle\Service;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface;
use Symfony\Component\Security\Core\Exception\AuthenticationException;

class CustomEntryPoint implements AuthenticationEntryPointInterface
{

    public function start(Request $request, AuthenticationException $authException = null)
    {
        $response = new Response("", Response::HTTP_UNAUTHORIZED);

        return $response;
    }

}
在您的
services.yml
文件中

services:
    service.entry_point:
        class: MyBundle\Service\CustomEntryPoint
最后将服务id
service.entry\u point
传递到
security.yml
文件的
firewall
部分中的
entry\u point
选项

这应该能奏效