我正在尝试在我的Spring启动/反应应用程序中实现密码重置/忘记密码功能,但我在尝试完全理解它时遇到了一些问题,我不确定我采取的方法是否正确。
我已经有两个注册/登录工作
@PostMapping("/sendForgotPasswordEmail")
public ResponseEntity<?> sendForgotPasswordEmail(@Valid @RequestBody ForgotPasswordEmailRequest request) {
User user = userService.findUserByEmailAddress(request.getForgotPasswordEmail());
ResetPasswordToken resetPasswordToken = userService.createResetPasswordToken(user);
if(userService.existsByEmailAddress(request.getForgotPasswordEmail())) {
emailService.sendResetPasswordEmail(request.getForgotPasswordEmail(), resetPasswordToken.getToken());
return ResponseEntity.ok(new ApiResponse("Please check your email for a password reset link" , true));
} else {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);
}
}
@PostMapping("/resetPassword")
public ResponseEntity<?> resetPassword(@RequestParam("token") String token, @Valid @RequestBody ForgotPasswordEmailRequest request) {
ResetPasswordToken resetPasswordToken = userService.findByResetPasswordToken(token);
if(resetPasswordToken == null) throw new BadRequestException("Invalid token");
Calendar calendar = Calendar.getInstance();
if((resetPasswordToken.getExpiredAt().getTime() - calendar.getTime().getTime()) <= 0) {
throw new BadRequestException("Link expired. Generate new link from http://localhost:3000/signup");
}
userService.resetPassword(request.getForgotPasswordEmail(), request.getNewPassword());
return ResponseEntity.ok(token);
}
UserServiceImpl。java(与重置令牌相关的方法)
@Override
public ResetPasswordToken createResetPasswordToken(User user) {
ResetPasswordToken resetPasswordToken = new ResetPasswordToken(user);
return resetPasswordTokenRepository.save(resetPasswordToken);
}
@Override
public ResetPasswordToken findByResetPasswordToken(String token) {
return resetPasswordTokenRepository.findByToken(token);
}
@Override
public void resetPassword(String emailAddress, String password) {
User user = findUserByEmailAddress(emailAddress);
user.setPassword(passwordEncoder.encode(password));
}
ForgotPasswordEmailRequest.java
public class ForgotPasswordEmailRequest {
private String forgotPasswordEmail;
private String newPassword;
// constructors / getters and setters
}
我想要澄清的是,如何确切地做到这一点,并确保我可以成功地将用户重定向到重置密码页面,他们可以从那里更改它。我不确定我的控制器方法在哪里遗漏了一些东西,或者我哪里出错了。
当用户在收到电子邮件后到达重置密码表单时,从那里需要在前端后端执行哪些过程。
我将感谢任何帮助。
通常流程是这样的:
介绍 {tip} 想要快速上手? 只需在一个新的 Laravel 应用中运行 php artisan make:auth 命令,然后在浏览器中访问 http://your-app.dev/register 或分配给应用的任何别的 URL。这条命令将搭建起整个身份验证系统,包括重置密码! 大多数 Web 应用都为用户提供了重置密码的功能。相比强迫你在每个应用中都要重实现一遍此功能,Laravel 提
我们已经讲解完了,如果创建,注册用户,激活,修改,删除用户了,看似已经全了,但是我们还缺了一点 那就是为用户提供重置密码! 这个是一个网站必不可少的功能之一吧 我们重置密码,在 sentry 中分成 两步 1、发送 重置代码给用户 2、验证 重置代码,成功则修改密码 首先我们看 第一步 获取重置密码的代码 try { // 根据 email 查找用户 $user = Sentry:
本文向大家介绍MySQL重置root密码,包括了MySQL重置root密码的使用技巧和注意事项,需要的朋友参考一下 我们介绍一种无需密码的重置root密码的方式。 步骤如下: 1、打开配置文件/etc/my.cnf,在mysqld下添加一行skip-grant-tables,如下: 这样我们就可以免密登录MySQL了。 然后保存并退出。 2、重启MySQL 这两个命令2选1: 3、终端输入 mys
我有一个Laravel 5.4应用程序,在我的管理区域有一个视图,允许我查看所有用户。 我想创建一个功能,允许我点击后端的一个按钮,自动发送默认的Laravel密码重置功能。 在我看来,我有以下几点: 在链接点击重置密码这当前通过我的路由点击以下功能 我不太熟悉Laravels的默认密码重置功能,因此我可能有点不熟悉,但我遇到以下错误: 传递给Illumb\Auth\Passwords\Passw
本文向大家介绍Linux mysql-5.6如何实现重置root密码,包括了Linux mysql-5.6如何实现重置root密码的使用技巧和注意事项,需要的朋友参考一下 1. 检查mysql服务是否启动,如果启动,关闭mysql服务 运行命令:ps -ef | grep -i mysql 如果开着就运行关闭的命令:service mysqld stop 2.修改mysql的配置文件my.conf
KeyToolException:无法从存储区“C:\Keystore\Keystore.jks”中读取密钥“app name”密钥:密钥存储区被篡改,或者密码不正确 我最好的解决办法是什么?