首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony 2用户界面::equals($user):比较以重新验证

Symfony 2用户界面::equals($user):比较以重新验证
EN

Stack Overflow用户
提问于 2011-12-10 08:23:18
回答 2查看 3.1K关注 0票数 2

来自UserInterface类

代码语言:javascript
复制
interface UserInterface {
    /**
     * The equality comparison should neither be done by referential equality
     * nor by comparing identities (i.e. getId() === getId()).
     *
     * However, you do not need to compare every attribute, but only those that
     * are relevant for assessing whether re-authentication is required.
     *
     * @param UserInterface $user
     * @return Boolean
     */
    function equals(UserInterface $user);
}

我应该如何实现这一点(“那些与评估是否需要重新认证有关的”)?那么,这是否意味着在Symfony 2重新验证用户(用户名/密码)之后呢?或者该函数用户是否要重新身份验证。我可以查一下id, username, password, salt吗?Symfony不通过密码检查重新认证用户吗?这应该足够了吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-10 12:48:55

如果equals()返回false,用户将被迫做出相应的反应。你到底要检查什么呢?因为每个应用程序都不一样。一般情况下,您需要比较所有可能影响应用程序安全性的用户的变化。

例如,如果您的应用程序中使用电子邮件和密码进行身份验证,则需要对它们进行比较。相反,比较名字和姓字段没有意义,因为它们不会影响应用程序中任何与身份验证相关的内容--当然,除非应用程序身份验证是基于它们的。

如果您支持应用程序中的不同角色--例如管理用户和普通用户--并且您的应用程序提供了一种为用户分配和重新分配这些角色的方法,那么您也需要比较角色。因为如果您想将用户从admin降为普通用户,您希望该更改尽快生效--在用户的下一个请求中--而不显式地要求用户注销和重新登录。如果您在本例中不比较角色,则用户将一直担任管理员,直到会话到期为止。

检查ID是没有意义的,除非您的应用程序提供了一种更改用户ID的方法,并且它们用于应用程序中的身份验证。我也不会检查salt,因为如果它被更改了,这也意味着密码也被更改了,所以只检查密码就足够了。

票数 8
EN

Stack Overflow用户

发布于 2016-11-03 21:27:25

更新:

现在,从EquatableInterface中删除了相等的函数,并将其添加到一个新接口: UserInterface,函数名改为isEqualTo

因此,如果要更改强制连接用户断开的逻辑,则用户类需要实现EquatableInterface接口函数isEqualTo

要小心:如果这样做,您将失去检查修改密码、修改用户名、.的标准用户检查

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8455337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档