我試圖阻止重定向到登錄頁面,當用戶試圖訪問一個頁面沒有令牌時,我有單頁面的應用程序,我只把ajax請求放在防火牆下,當用戶在做AJAX無令牌我想了ajax返回禁止例外,所以我將能夠趕上它在客戶端symfony2安全 - 禁用登錄路徑和禁止顯示
目前AJAX的回報,因爲要求「發現」被重定向到登錄頁面
我還沒有找到一個解決方案在食譜到目前爲止我不想使用API令牌,只發送異常而不是重定向登錄
我試圖阻止重定向到登錄頁面,當用戶試圖訪問一個頁面沒有令牌時,我有單頁面的應用程序,我只把ajax請求放在防火牆下,當用戶在做AJAX無令牌我想了ajax返回禁止例外,所以我將能夠趕上它在客戶端symfony2安全 - 禁用登錄路徑和禁止顯示
目前AJAX的回報,因爲要求「發現」被重定向到登錄頁面
我還沒有找到一個解決方案在食譜到目前爲止我不想使用API令牌,只發送異常而不是重定向登錄
您需要爲防火牆定義一個entry_point
,以便您返回未經授權的響應。有關入口點的信息可以在文檔here中找到。我將在這裏複製該段以防未來的要求。
當用戶根本沒有被認證時(即當令牌存儲器還沒有令牌時),防火牆的入口點將被調用以「啓動」認證過程。一個入口點應該實現AuthenticationEntryPointInterface,它只有一個方法:start()。該方法接收當前的Request對象和異常偵聽器被觸發的異常。該方法應該返回一個Response對象。例如,這可能是包含登錄表單的頁面,或者在基本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_point
您entry_point
選項security.yml
文件firewall
部分。
這應該可以做到。
是否可以使用'entry_point'來禁用auth? –