Когда я регистрируюсь на странице регистрации, ссылка в полученном электронном письме работает нормально.
Когда я вместо этого использую $user->sendEmailVerificationNotification()
как я видел в vendor\laravel\framework\src\Illuminate\Auth\Listeners\SendEmailVerificationNotification.php, он не работает.
Я получаю электронное письмо, но когда я нажимаю на ссылку подтверждения, меня перенаправляют на страницу входа, и пользователь не проходит проверку.
Вариант использования: в моей системе есть суперпользователь, который может добавлять пользователей, и я надеюсь отправить это электронное письмо, чтобы пользователи могли подтвердить себя.
Любая помощь будет оценена по достоинству.
Разве вы не должны войти в систему, чтобы ваш адрес не был проверен случайным человеком?
Ссылка использует подписанный URL. Это не может быть проверено случайным человеком.






Этот ответ предполагает, что вы уже настроили Аутентификация и Подтверждение по элетронной почте Laravel.
Когда пользователь регистрируется в приложении, контроллер по умолчанию использует трейт Illuminate\Foundation\Auth\RegistersUser. Обратите внимание на дополнительную функциональность, которая имеет место в методе register(), а также обратите внимание, что генерируется \Illuminate\Auth\Events\Registeredсобытие, который, в свою очередь, запускает слушательSendEmailVerificationNotification (откуда вы в настоящее время получаете свой код).
Для вашего пользовательского класса вы потенциально можете повторно использовать трейт Illuminate\Foundation\Auth\RegistersUser, но это может показаться странным, поскольку ваш класс, вероятно, не является контроллером, а трейт включает дополнительную логику, специфичную для контроллера.
Вместо этого вы можете попробовать скопировать код из Illuminate\Foundation\Auth\RegistersUser::register() и использовать его в своем новом классе.
Итак, что-то похожее на:
// If you do not yet have a new user object.
$user = \App\User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => \Illuminate\Support\Facades\Hash::make($data['password']),
]);
// Fire the event now with the user you want to receive an email.
event(new \Illuminate\Auth\Events\Registered($user));
Дополнительная информация:
Спасибо за ответ. Я попробовал, как вы предложили, и я получил электронное письмо. Однако ссылка signURL не проверяла пользователя, а просто перенаправляла его на страницу входа.
В итоге мне пришлось перевернуть собственное решение. К сожалению, я тратил слишком много времени, пытаясь понять, чего мне не хватает. Еще раз спасибо за помощь.
@jabdefiant, не могли бы вы поделиться своим нестандартным решением? Я столкнулся с той же проблемой, что он перенаправляет пользователя на страницу входа.
Мне пришлось создать свой собственный почтовый ящик, а затем запустить его в новом контроллере, когда администратор регистрирует пользователя, например. Mail::to($user->email)->send(new myVerifyMail($user, 'Verify Email Address')); Почтовый объект создает подписанный URL-адрес, и представление должно включать эту ссылку, чтобы пользователь мог щелкнуть ее. Это может быть не лучший способ справиться с этим, но я уже потратил слишком много времени на эту проблему.
Спасибо за включение версии Laravel - это важная информация, которую я использовал для построения своего ответа.