在Symfony2中,如何使用户帐户过期?

阿努比斯

我想给用户一个时间有限的角色。例如,如果我有三个角色:

  1. ROLE_ADMIN
  2. ROLE_ACTIVE
  3. ROLE_USER

创建用户后,他将成为ROLE_ACTIVE帐户的用户,他有30天的使用时间,然后成为ROLE_USER。

我已经credentials_expire_at在用户实体中看到了,但是如何使用它呢?

可编写脚本

您可以设置credentialsExpiresAt如下:

$user = new User(); // depends on your user class name
$user->setCredentialsExpireAt(new \DateTime()); // expires now for example

这只能解决您的部分问题,因为一旦“日期”超过setCredentialsExpireAt了用户的登录到期日期,该用户就无法再登录日期。

您可以通过多种方式解决此问题,例如,运行cronjob来查找具有ROLE_ACTIVE角色的过期用户,并更改其ROLE并重新激活帐户。

或者,此其他选项可能更适合您的情况:

覆盖用户模型中的以下方法

//  FOSUserBundle/Model/User.php - override this in your child bundle.
public function isCredentialsNonExpired()
{
    if (true === $this->credentialsExpired) {
        return false;
    }
    if (null !== $this->credentialsExpireAt && $this->credentialsExpireAt->getTimestamp() < time()) {
        return false;
    }
    return true;
}

在此if块中:

if (null !== $this->credentialsExpireAt && $this->credentialsExpireAt->getTimestamp() < time()) {

return false如果用户具有ROLE_ACTIVE,请替换为逻辑以更改用户角色,删除到期并重新激活帐户。保存用户详细信息和return true

基本上,这意味着当用户登录并且FOSUserBundle检查帐户是否已过期时,您将有机会覆盖过期并在拒绝用户访问之前进行所需的更改,您仍然需要设置credentialsExpireAt创建帐户。

编辑:

对于您的特定用例,我认为将credentialsExpiresAt字段全局设置为现在+ 30天是一个好主意。您可以在您的用户实体中执行此操作,使用FOSUserBundle ..时需要扩展该实体。

// Your file that extends FOSUserBundle/Model/User.php
public function __construct()
{
    parent::__construct();
    $this->setCredentialsExpireAt(
        new \DateTime(date('Y-m-d H:i:s', strtotime("+30 days")))
    );
}

有了此代码,每个新用户的凭据将在30天内过期,在此期间,您的代码将有机会捕获事件并覆盖您所需的任何内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

不是symfony2中的authanticat用户

来自分类Dev

如何在symfony2中使用图形?

来自分类Dev

如何强制用户注销symfony2

来自分类Dev

Symfony2:如何使用FOSUserBundle在管理界面中保留新用户?

来自分类Dev

在Symfony2中记录用户操作

来自分类Dev

如何检查用户在symfony2中是否完全具有一个角色?

来自分类Dev

如何在symfony2的yaml菜单中包含用户信息?

来自分类Dev

如何基于symfony2中基于用户提交的数据进行条件表单验证?

来自分类Dev

如何从Symfony2中的Controller使用EntityManager排序结果

来自分类Dev

如何在Symfony2 / 3中基于用户角色自定义表单字段?

来自分类Dev

如何使用Doctrine在Symfony2中实现子查询?

来自分类Dev

如何在Symfony2中禁止授权用户访问?

来自分类Dev

Symfony2 FOSUserBundle显示在树枝模板中过期

来自分类Dev

不是symfony2中的authanticat用户

来自分类Dev

如何在Symfony2中使用非标准用户名进行身份验证

来自分类Dev

如何使用Doctrine在Symfony2中创建复杂的表单

来自分类Dev

如何强制用户注销symfony2

来自分类Dev

如何在Symfony2中使用misc函数?

来自分类Dev

如何检查用户在symfony2中是否完全具有一个角色?

来自分类Dev

如何使用Symfony2获取普通密码用户?

来自分类Dev

仅在完全身份验证后,如何强制已身份验证的用户使用Symfony2中的HTTPS?

来自分类Dev

在Symfony2中,如何将会话添加到匿名用户

来自分类Dev

Doctrine2 + Symfony2:如何在Symfony2中使用命名空间的Doctrine实体?

来自分类Dev

如何创建自动过期的用户帐户?

来自分类Dev

如何在symfony2中使用translation:update?

来自分类Dev

如何从Symfony2中的Controller使用EntityManager排序结果

来自分类Dev

无法使用户的头像实体在Symfony2中将其删除

来自分类Dev

如何在Symfony2的请求订户/侦听器中检查用户的IP?

来自分类Dev

在Symfony2中,我如何获得用户的完整角色列表

Related 相关文章

  1. 1

    不是symfony2中的authanticat用户

  2. 2

    如何在symfony2中使用图形?

  3. 3

    如何强制用户注销symfony2

  4. 4

    Symfony2:如何使用FOSUserBundle在管理界面中保留新用户?

  5. 5

    在Symfony2中记录用户操作

  6. 6

    如何检查用户在symfony2中是否完全具有一个角色?

  7. 7

    如何在symfony2的yaml菜单中包含用户信息?

  8. 8

    如何基于symfony2中基于用户提交的数据进行条件表单验证?

  9. 9

    如何从Symfony2中的Controller使用EntityManager排序结果

  10. 10

    如何在Symfony2 / 3中基于用户角色自定义表单字段?

  11. 11

    如何使用Doctrine在Symfony2中实现子查询?

  12. 12

    如何在Symfony2中禁止授权用户访问?

  13. 13

    Symfony2 FOSUserBundle显示在树枝模板中过期

  14. 14

    不是symfony2中的authanticat用户

  15. 15

    如何在Symfony2中使用非标准用户名进行身份验证

  16. 16

    如何使用Doctrine在Symfony2中创建复杂的表单

  17. 17

    如何强制用户注销symfony2

  18. 18

    如何在Symfony2中使用misc函数?

  19. 19

    如何检查用户在symfony2中是否完全具有一个角色?

  20. 20

    如何使用Symfony2获取普通密码用户?

  21. 21

    仅在完全身份验证后,如何强制已身份验证的用户使用Symfony2中的HTTPS?

  22. 22

    在Symfony2中,如何将会话添加到匿名用户

  23. 23

    Doctrine2 + Symfony2:如何在Symfony2中使用命名空间的Doctrine实体?

  24. 24

    如何创建自动过期的用户帐户?

  25. 25

    如何在symfony2中使用translation:update?

  26. 26

    如何从Symfony2中的Controller使用EntityManager排序结果

  27. 27

    无法使用户的头像实体在Symfony2中将其删除

  28. 28

    如何在Symfony2的请求订户/侦听器中检查用户的IP?

  29. 29

    在Symfony2中,我如何获得用户的完整角色列表

热门标签

归档