在我的系统中,用户无法注册。管理员在管理面板中添加所有用户并告诉他们您的密码是" xxx"。现在我需要向用户发送邮件。其中包含用户电子邮件和用户密码。系统工作得很好。但有一个例外。在邮件中,密码是加密的。我怎么解决?我不知道任何线索。我正在使用观察员。在模型中:
public static function boot()
{
parent::boot();
self::created(function () {
$customer = Customer::latest()->get()->first();
Mail::send('emails.user_login_informations', ['customer' => $customer], function($message) use($customer) {
$message->to($customer->email, $customer->name, $customer->password)
->subject('Login Information');
});
});
}
ps:这是有效的。在我的邮件中:
Your email: xxx@example.com
Your Password: $2y$10$/GW5XNH9KGU.Nz05PZHFJuKb2ldhwYhS8oMX9e7HJIuFNJ
但这看起来像:
Your email: xxx@example.com
Your Password: 123
答案 0 :(得分:2)
您可以创建临时密码字段,并在用户激活时将其删除。我需要这个用于现实世界的例子。例如:
Event::listen('rainlab.user.activate', function($user) {
$user->temp_password = null;
$user->save();
});
User::saving(function ($user) {
$password = post('User.password');
if ($password && ! $user->attributes['is_activated']) {
$user->temp_password = $password;
}
});
如上所述,这包括很大的安全风险。
答案 1 :(得分:1)
您哈希用户密码以提高安全性。哈希功能是一种单向散列,因此无法逆转。
更好的方法是创建密码重置令牌并将其发送给用户。因此,用户可以使用电子邮件地址/令牌组合设置新密码。要增加此方法,您可以在30分钟左右后让令牌过期。