php - 如何使用 laravel 电子邮件加密
问题描述
嗨,我正在尝试对用户表中的电子邮件进行加密,并通过加密更改身份验证过程的“电子邮件”,但对我不起作用,不断返回我的电子邮件与记录不匹配。我的注册控制器是:
User::create([
'name' => $data['name'],
'email' => sha1(sha1($data['email'])),
'password' => Hash::make($data['password']),
'referred_by' => $referred_by
]);
我正在尝试使用 laravel 进行手动身份验证:https ://laravel.com/docs/6.x/authentication#authenticating-users
我的登录控制器:
public function authenticate(Request $request)
{
$credentials = $request->only(sha1(sha1('email')), 'password');
if (Auth::attempt($credentials)) {
// Authentication passed...
return redirect()->intended('dashboard');
}
}
注意:我知道 sha1 不好,但我认为电子邮件的双倍 sha1 将很难破解。
我也无法准确找到进行身份验证的位置(因为我像 3 周前一样开始学习 laravel),在那里我可以将电子邮件字段的用户输入切换为 sha1 x2,以便它可以与用户表电子邮件进行比较。
谢谢
解决方案
在这里找到答案:https ://laracasts.com/discuss/channels/laravel/encrypt-email-field-in-users-table
通过以下方式更改 AuthenticatesUsers 的功能登录:
public function login(Request $request)
{
if (Auth::attempt(['email' => sha1(sha1($request->email)), 'password' => $request->password])) {
return redirect()->intended();
} else {
return $this->sendFailedLoginResponse($request);
}
}
感谢 saaz。
推荐阅读
- kubernetes - 将连接命令保存在 kubeadm init 生成的服务器内存中
- javascript - 如果javascript中发生“else”语句,如何在2秒后重新加载页面
- arrays - 如何在从 pdf 获得的字节数组中挑选出一个对象?
- java - 在 JPQL @Query 注释查询中使用 @Param 作为对象以获取多个参数
- php - Telegram Bot 无法解禁用户
- python - 计算值在滚动窗口内满足条件的次数
- android - 显示自定义插页式广告,如 admob 插页式广告
- opengl - 哪种图像格式加载到内存所需的时间更短
- mongodb - 如何在 MongoDB 中按数据范围对订单进行分组?
- javascript - 无法通过 React 中的测试用例说模拟函数 onClick()