php - 没有 FosUserBundle 的 Symfony 忘记密码
问题描述
所以我正在尝试使用 symfony 创建一个拥有用户的网站。这些用户需要能够从他们的帐户中更改他们的密码(这应该不难,一个简单的表单,在提交时会更改当前的密码user
)但是我正在努力设计一种实现“重置密码”的方法适用于完全忘记密码的用户。
我的计划是让用户收到一封带有唯一链接的电子邮件。当访问该链接时,symfony(通过slug
标签)检查该链接是否在最后 5 分钟内发出。(可能需要一个带有链接列表的数据库,需要用户名时间)。然后用户将获得一个简单的表单,他们可以在其中输入新密码,然后被重定向到登录页面。
getUser
我的问题是,当用户实际上没有经过身份验证时,我不能希望运行。即使我的时间、链接和用户名数据库可以指向特定用户,据我所知,Symfony 不会加载user
类,直到它们通过密码正确验证。我该如何解决这个问题?我应该手动写入数据库而不涉及 securityBundle /user
类吗?谢谢。
解决方案
使用您的Repository/UserRepository
类从数据库中获取User
实体。修改User
对象并使用EntityManager
类持久化它。
$userRepo = $doctrine->getRepository( 'User' );
$user = $userRepo->find( $userId );
if ( $user !== null ) {
$encryptedPassword = someHowEncryptThePassword( $plainPassword );
$user->setPassword( $encryptedPassword );
$em = $doctrine->getManager();
$em->persist( $user );
$em->flush();
}
推荐阅读
- c# - 如何在c#中修复时间字符串
- css - 将鼠标悬停在另一个 div 上时,无法让 div 的不透明度为 1
- ruby-on-rails - 我想在我插入多个图像的相册控制器中删除单个图像。我怎样才能删除?
- python - SCS 和 MOSEK 求解器继续运行
- python - 使用具有多个值的字典过滤数据框
- c++ - C ++“<”小于运算符未按预期工作
- css - 我在我的 react js 中添加了背景图片。但它显示一个错误
- unity3d - unity 3d 的包管理器未显示 ProGrids 模块
- python - 如何使用统计方程python计算总体平均值的置信度值
- swift - 如何从多个凭据中获取特定的用户凭据以用于保护空间