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

  显示原文与译文双语对照的内容

我想防止重定向到登录页面,我有单页应用,而且只有在没有令牌的情况下,ajax才能返回。

目前,ajax返回"找到",因为请求被重定向到登录页面

我还没有在 cookbook 中找到解决方案,现在我不想使用api标记,只发送一个异常,而不是重定向到登录

时间: 原作者:

你需要为防火墙定义一个 entry_point,以便你返回未经授权的响应。 有关入口点的信息可以在这里的文档中找到。 我将在以后的请求中复制段落。

当用户未进行身份验证时( 例如 。 当令牌存储没有令牌时,将调用防火墙点的入口,以便"开始"进行身份验证过程。 入口点应该实现 AuthenticationEntryPointInterface,它只有一个方法: start() 。这里方法接收当前的请求对象和异常侦听器触发的异常。 方法应返回响应对象。 例如,包含登录表单或者基本HTTP身份验证的页面,提示用户提供用户名和密码。

因这里,为了让你这样做,必须创建一个将被定义为服务的类。

它应该是这样的:


namespace MyBundleService;



use SymfonyComponentHttpFoundationRequest;


use SymfonyComponentHttpFoundationResponse;


use SymfonyComponentSecurityHttpEntryPointAuthenticationEntryPointInterface;


use SymfonyComponentSecurityCoreExceptionAuthenticationException;



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: MyBundleServiceCustomEntryPoint



最后将服务 id service.entry_point 传递到 security.yml 文件 firewall 部分的entry_point 选项。

这 玩意 很 有用.

...