Я относительно новичок в Laravel и рюкзаке, поэтому, пожалуйста, прости меня, если я задаю простой вопрос. Я унаследовал систему Laravel / Backpack, которую я должен поддерживать. Общий фронтальный веб-сайт не требует аутентификации для доступа, но есть область администрирования Backpack, которая требует аутентификации для доступа. Кажется, что все работает, маршрутизация как на общем веб-сайте, так и в административной области, за исключением одной вещи.
Если пользователь забывает свой пароль и он go через привязку «Сброс пароля» через логин странице, используя группу / admin / routing, отобразятся страницы «Сброс пароля» и электронное письмо будет успешно отправлено и получено. Это все хорошо и замечательно, и я понимаю, что происходит.
POST | admin/password/email | backpack.auth.password.email | Backpack\Base\app\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail | web,guest:admin |
GET|HEAD | admin/password/reset | backpack.auth.password.reset | Backpack\Base\app\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web,guest:admin |
POST | admin/password/reset | | Backpack\Base\app\Http\Controllers\Auth\ResetPasswordController@reset | web,guest:admin |
GET|HEAD | admin/password/reset/{token} | backpack.auth.password.reset.token | Backpack\Base\app\Http\Controllers\Auth\ResetPasswordController@showResetForm | web,guest:admin |
Однако, когда приходит электронное письмо со ссылкой сброса, оно использует неправильный маршрут. По умолчанию используется стандартный (Laravel) маршрут к основному веб-сайту, а не маршрут / admin. Например, привязка сброса должна относиться к:
https://website.com/admin/password/reset/abc123?email=info@example.com
, но вместо этого привязка:
https://website.com/password/reset/abc123?email=info@example.com
и выбирает результирующий стандартный Laravel маршрут:
GET|HEAD | password/reset | password.request | App\Http\Controllers Auth\ForgotPasswordController@showLinkRequestForm | web,guest |
GET|HEAD | password/reset/{token} | password.reset | App\Http\Controllers\Auth\ResetPasswordController@showResetForm | web,guest |
Я долго копался в коде и не вижу, как это происходит. Сначала я пытался выполнить отладку через сервер Artisan на моем локальном хосте, где я обнаружил, что якорь был установлен на:
http://127.0.0.1:8000/localhost/password/reset/abc123?email=info@example.com
Что было странным в этом, так это бит localhost. Я посмотрел в своем файле .env и
APP_URL=localhost
Если я изменил APP_URL на «admin», то он работал, якоря в сообщении сброса были правильными:
https://website.com/admin/password/reset/abc123?email=info@example.com
Мне было интересно была ли это проблема развертывания / разработки, поэтому я перешел на рабочий сервер и на действующий веб-сайт. APP_URL был правильно установлен на
APP_URL=https://thecorrectdomain.com
Если я изменил APP_URL на «admin», то якоря пароля для сброса пароля теперь записываются правильно. Это кажется странным, так как я думаю, что APP_URL должен ссылаться на весь домен веб-сайта, как показано выше.
Я также видел несколько интересных статей, в которых они выступают за переопределение классов уведомлений, но, конечно, это не должно быть необходимо для того, что должно Я думаю, все равно работать.
Кто-нибудь есть идеи о том, где я иду не так?
Спасибо