2016-11-21 48 views
0

我如何測試會話是否存在於symfony中? 沒有框架,我們繼續是這樣的:如何測試會話是否已經存在?

<?php 

if(isset($_SESSION['login'])) { 
echo 'Bonjour '.$_SESSION['login'].' vous etes connecté.<br>'; 
} 

?> 

如何在與Request對象symfony的控制器會話服務做到這一點?

+1

您是否有興趣知道會話是否已開始,或者您想知道用戶是否已通過身份驗證? – Gerry

+0

我想知道會話是否已經打開,例如,當我訪問我的主頁時!如果我已經連接(會話已經打開),我直接進入我的個人空間,如果沒有,我將被重定向到連接頁面! (原諒我的壞話) –

+0

知道會話是開放的還是知道某人是否已登錄(因此您可以重定向到他的個人空間),這兩個完全不同的問題。在我看來,您想知道用戶是否已通過身份驗證。 – Gerry

回答

1

在Symfony中,session服務是Symfony\Component\HttpFoundation\Session\Session的一個實例。也就是說,session確實提供了幾種方法來檢查或操作會話。

你的具體情況,你會做這樣的事情:

$session = $request->getSession(); 

if ($session->has('login')){ 
    $message = 'Bonjour '.$session->get('login').' vous etes connecté.<br>'; 
} 

但是,又注意到@Gerry的評論,他的問題是一個非常有效的一個

希望這有助於...

+0

這是它的兄弟,非常感謝^^ –

+2

雖然這似乎是OP想要的,但我想指出這不是檢查身份驗證/授權的正確方法,在這些情況下,安全組件應該用來代替直接操作相關的會話數據。 – Gerry

+0

@Gerry我完全同意:) –