在官方的Symfony文档告诉我们以下几点:
// yay! Use this to see if the user is logged in
if (!$this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_FULLY')) {
throw $this->createAccessDeniedException();
}
// boo :(. Never check for the User object to see if they're logged in
if ($this->getUser()) {
}
Run Code Online (Sandbox Code Playgroud)
我一直在使用$this->getUser()到现在没有问题,既检查用户是否在线并获得当前登录用户,并且发现它是错误的.但我找不到的是为什么这样做是错误的.
任何人都可以告诉或举例说明这会导致问题吗?我没有看到问题,因为如果没有人登录并且当前在User类中作为对象登录,并且可以访问其方法,它总是返回null(从anon.文档说明转换).
我认为这是由记住我的令牌引起的.
Symfony文档说明了这一点:
仅因"记住我的cookie"而登录的用户将拥有IS_AUTHENTICATED_REMEMBERED,但不会有IS_AUTHENTICATED_FULLY.
$this->getUser()不会做出这种区分,所以建议使用authorization_checker.出于这个原因,我的假设是,这个建议只是为了避免潜在的问题,那些不了解这一事实的开发人员可能遇到这些问题.