Laravel 5 Сброс пароля с угловым обзором
Я пытаюсь использовать встроенный сброс пароля Laravel в моем приложении, где Laravel 5.1 выступает в качестве внутреннего интерфейса API и Angular 1.3 для всех внешних интерфейсов. Я настроил сброс пароля в соответствии с документами, где я сделал следующее:
1) Создать таблицу
php artisan migrate
2) Добавил это в маршрут:
Route::post('password/email', 'Auth/PasswordController@postEmail');
Route::post('password/reset', 'Auth/PasswordController@postReset');
Поскольку я буду использовать Angular для отображения форм веб-интерфейса, я не добавил представления для GET
, Я не сделал никаких изменений в Auth/PasswordController.php
и прямо сейчас так же, как он пришел. Но когда я проверяю вышеуказанный URL от Почтальона POST
запрос, я получаю ошибку:
View [emails.password] not found.
Как я могу позволить Angular Handle обращаться с видами, чтобы Laravel не беспокоился о них? Нужно ли иметь Laravel View для восстановления встроенного пароля? Как мне подойти к этому?
4 ответа
Переопределить postEmail
а также postReset
методы, чтобы они возвращали ответ JSON (не позволяйте ему перенаправлять). Впоследствии пост /password/email
а также /password/reset
от углового через xhr.
Открыто app/Http/Controllers/Auth/PasswordController.php
<?php namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
class PasswordController extends Controller
{
use ResetsPasswords;
//add and modify this methods as you wish:
/**
* Send a reset link to the given user.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function postEmail(Request $request)
{
$this->validate($request, ['email' => 'required|email']);
$response = Password::sendResetLink($request->only('email'), function (Message $message) {
$message->subject($this->getEmailSubject());
});
switch ($response) {
case Password::RESET_LINK_SENT:
return redirect()->back()->with('status', trans($response));
case Password::INVALID_USER:
return redirect()->back()->withErrors(['email' => trans($response)]);
}
}
/**
* Reset the given user's password.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function postReset(Request $request)
{
$this->validate($request, [
'token' => 'required',
'email' => 'required|email',
'password' => 'required|confirmed',
]);
$credentials = $request->only(
'email', 'password', 'password_confirmation', 'token'
);
$response = Password::reset($credentials, function ($user, $password) {
$this->resetPassword($user, $password);
});
switch ($response) {
case Password::PASSWORD_RESET:
return redirect($this->redirectPath());
default:
return redirect()->back()
->withInput($request->only('email'))
->withErrors(['email' => trans($response)]);
}
}
}
У меня была такая же проблема, как у тебя. Вы могли бы изменить вид в config/auth.php
если у вас есть другой, которого нет в ресурсах /views/emails/password.blade.php.
Поскольку это представление не создается по умолчанию, поэтому вы получили ошибку.
Выберите путь к папке с представлениями в app\bootstrap\cache\config.php в разделе "view"
'view' =>
array (
'paths' =>
array (
0 => '/home/vagrant/Code/app/resources/views',
),
'compiled' => '/home/vagrant/Code/app/storage/framework/views',
),
этот путь ДОЛЖЕН быть на СЕРВЕРЕ! не у вас локальный машинный как "D:\WebServers\home\Laravel\app\bootstrap\cache", если вы используете усадьбу. И вы должны использовать команду как: "php artisan config:clear | cache" на сервере SERVER!