微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 我们为什么不检查User对象以检查用户是否在Symfony2中处于联机状态

official Symfony documentation告诉我们以下内容

// 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()) {

}

到目前为止我一直在使用$this-> getUser()而没有问题,既检查用户是否在线并获取当前登录用户,并且发现它是错误的.但我找不到的是为什么这样做是错误的.

任何人都可以告诉或举例说明这会导致问题吗?我没有看到问题,因为如果没有人登录并且当前在User类中作为对象登录,并且可以访问其方法,它总是返回null(从anon转换为文档所说).

解决方法:

我认为这是由记住我的令牌引起的.

Symfony文档说明了这一点:

Users who are logged in only because of a “remember me cookie” will
have IS_AUTHENTICATED_REMEMBERED but will not have
IS_AUTHENTICATED_FULLY.

$this-> getUser()不会进行此区分,因此建议使用authorization_checker.出于这个原因,我的假设是这个建议只是为了避免潜在的问题,那些不了解这一事实的开发人员可能遇到这些问题.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐