Я работаю над Laravel 5.6 активации электронной почты и забытого пароля. Я успешно отправил письмо после регистрации или нажал кнопку забытого пароля после ввода адреса электронной почты пользователя. Однако веб-сайт будет перенаправлять на домашнюю страницу (127.0.0.1:8000) вместо того, чтобы выполнять действие активации или сброса pw, как только пользователь щелкает ссылку активации в электронном письме и его учетная запись находится в состоянии входа в систему.
Пример здесь (активация по электронной почте):
Щелчок по ссылке (127.0.0.1:8000/register/activate/ {sometokenhere}) внутри письма активации приведет только к самой домашней странице (127.0.0.1:8000)
Внутри RegisterController.php,
...
protected function create(array $data)
{
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'activate' => 0,
'activation_token' => str_random(60),
]);
$user->notify(new SignupActivate($user));
return $user;
}
public function register(Request $request)
{
$this->validator($request->all())->validate();
$this->guard()->login($this->create($request->all()));
return redirect()->to($this->redirectTo); //homepage
}
public function signupActivate($token)
{
$user = User::where('activation_token', $token)->first();
if (!$user) {
return response()->json([
'user' => $user,
'token' => $token,
'message' => 'This activation token is invalid.'
], 404);
}
$user->active = 1;
$user->activation_token = '';
$user->save();
return $user;
}
...
Внутри Notification / RegistrationActivate.php,
...
public function via($notifiable)
{
return ['mail'];
}
public function toMail($notifiable)
{
$url = url('/register/activate/'.$notifiable->activation_token);
$name = $this->user->name;
$email = $this->user->email;
return Mail::send('activate', ['name'=>$name, 'url'=>$url], function($message) use($email, $name){
$message->to($email, $name)
->from('[email protected]', 'Admin')
->subject('Activate your account');
});
}
...
связанный маршрут,
Route::group(['namespace' => 'Auth'], function () {
Route::get('/register/activate/{token}', 'RegisterController@signupActivate'); //added
});
activate.blade.php,
Hi {{$name}},<br><br>
This email is a confirmation email.<br>
<a href = {{$url}} data-method = "delete">Activation link</a>
Я просто прокомментирую эту строку внутри RedirectAuthenticated.php: if (Auth :: guard ($ guard) -> check ()) {// return redirect ('/'); } Вроде работает нормально, но есть ли риск сделать это таким образом?






Я новичок в Laravel. Интересно, это проблема маршрутизации, проблема сеанса (?) Или что-то еще. Я не уверен, что объясняю свою ситуацию достаточно ясно или нет .. Я могу активировать учетную запись, только если учетная запись пользователя выйдет из системы (в результате щелчка по ссылке activatoin на экран будет возвращена строка json).