使用Symfony 2.0和FOSUserBundle,我需要知道如何限制访问以使其唯一。
这就是我的意思:
这可能吗?
答案 0 :(得分:1)
只有当您能够找到一种安全的方式来了解用户会话已被销毁或他已从其他计算机注销时,才有可能并且可信赖。因为它可以在没有用户明确行动的情况下发生(即他关闭浏览器并且会话超时),我不会依赖它。当然,您总是可以尝试找到一些解决方法(即谓词会话到期时间和跟踪用户注销),但它仍然不是100%安全。考虑一下新访问将被拒绝的情况,因为会话仍在其他浏览器上打开而没有人在其前面。
另一方面,您可以使用Voters以及Allow one session only at a time中的一些提示以另一种方式(当新用户登录,其他注销时)执行此操作。
答案 1 :(得分:0)
如果我错了,请纠正我,但我认为最终没办法做我想要的事情,因为Chrome(我认为FF也是如此)保存了确切的cookie并能够恢复会话,同时扫描所有LoginHandler方法。
让我解释一下自己。
是的,我是(实际上我做的)实施你的答案和评论中描述的解决方案:
User
和会话嗯...到目前为止很棒,因为它似乎解决了这个问题。
最重要的是:如here和here所述,Chrome未正确删除会话Cookie。因此,当用户没有注销并且只是关闭浏览器时,无论何时他或她回到Chrome,会话都会自动恢复,而无需通过登录处理程序,登录方法或其他任何方式。
这导致“魔法”日期时间键不能保存在数据库和会话中,因此,只需将一个会话作为时间放在一个方向盘中,原始计划是什么。
关于这个问题还有什么亮点?
我想哭:(