我正在开发一个基于 Symfony 2 PHP 框架的 Web 应用程序。
它有一个供注册用户使用的登录页面。我想为每个登录系统的用户执行一些自定义逻辑。
基本上,我想在任何用户登录系统时进行记录,但我不想在主页的控制器上执行此操作,因为每次用户重新加载主页时它都会记录。
我还想实现一个在用户登录系统时调用的函数,以便我可以决定是否授予任何用户访问权限(基于用户数据库中存储的全套信息)。
我怎样才能实现这个目标?
对于你的问题的第一部分,我有类似的东西(例如存储用户登录的最后日期和时间)。我沿着因事件而触发的服务的路线。在您的服务配置中(此处为 XML 示例):
<services>
<service id="my.login.listener" class="My\OwnBundle\Event\LoginEventListener">
<tag name="kernel.event_listener" event="security.interactive_login" />
</service>
</services>
然后在包中的适当位置创建上述类:
namespace My\OwnBundle\Event;
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
use My\OwnBundle\User\User as MyUser;
class LoginEventListener
{
/**
* Catches the login of a user and does something with it
*
* @param \Symfony\Component\Security\Http\Event\InteractiveLoginEvent $event
* @return void
*/
public function onSecurityInteractiveLogin(InteractiveLoginEvent $event)
{
$token = $event->getAuthenticationToken();
if ($token && $token->getUser() instanceof MyUser)
{
// You can do something here eg
// record the date & time of the user's login
}
}
}
我想你可以将其扩展到问题的第二部分,但我没有这样做:-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)