处理FOSUserBundle PlainPassword字段
我在我的Bundle中创建了一个用户自定义类。 它从FUSUserBundle的BaseUser类继承。
在我的课堂上,我定义了几个属于我的Bundle实体的属性,如Adress,Avis等。
我用data_class User定义了所有表单的formType。 它允许我检索有趣的用户信息,如用户名(!)并将其显示在我的表单中。 但是当我验证我的表单时,它会要求我填写User类的plainPassword字段,因为它是一个必需属性。
首先,我想从数据库中检索密码,以便在显示之前填写表单中的密码,但这似乎不可能作为安全措施。 所以我试图在注册后将其存储在会话中(丑陋的我知道),但似乎无法强制表单数据的值(当然,因为它是一个密码类型字段)...
所以问题是:你会怎么做?
但是检索它的目的是什么? 你想修改任何用户的数据,如用户名或电子邮件? 请记住,您可以在FOSUser Bundle中使用/配置“模块”,该模块用于修改用户名和电子邮件。 对于更改密码你有单独的'模块'更改密码(我不记得路径)。 也许这就是你想要的? 当然,用户只能编辑他自己的数据。 这些模块已准备好在缺省情况下使用(您必须为它们提供路由)。
例如,如果您想要修改其他用户可能对您感兴趣的数据:如果使用密码,请查看名为“salt”的db中的列,该列用于在db中对密码进行编码。 如果你尝试在没有salting的情况下在db中保存密码,它将不起作用 - 所以我认为如果你想通过一些自定义操作在db中更改密码 - 你必须设置普通密码并且它将被自动编码。
如果您想默认填写某些表单的字段,请在Symfony,Fields类型和其他附加功能部件中阅读一些有关表单的内容,并记住密码字段需要单独使用。
我不会在任何地方存储用户密码,更不用说在浏览器中显示它。
使用纯文本密码进行操作会对您的应用程序以及任何和所有使用它的用户造成严重的安全威胁。
FOSUserBundle中的默认User类有两个密码, password
和plainPassword
。 该明文密码由表单填写,然后在控制器中, password
字段由您为防火墙配置的任何加密方法生成。 然后将新用户添加到数据库,并且明文密码字段被清除并且不再使用。
如果您尝试设置忘记的密码解决方案,我会建议用户使用某种唯一密钥(作为URL参数)向用户发送电子邮件,要求他们确认,然后让他们有机会更新密码。
链接地址: http://www.djcxy.com/p/91687.html