2016-11-21 74 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我完全同意:) –