#laravel #middleware #laravel-middleware
#laravel #промежуточное программное обеспечение #laravel-промежуточное программное обеспечение
Вопрос:
Итак, у меня есть два поддомена orders.domain.com и admin.domain.com
вот мой web.php
Route::group(['domain' => 'orders.domain.com'], function()
{
Route::get('/', 'AppHttpControllersIsoreController@index')->name('view.klientas');
// view authenticated coupon
Route::get('{couponcode}/view', 'AppHttpControllersIsoreController@view')->name('view.show');
// show coupon authenticate form
Route::get('{couponcode}/auth','AppHttpControllersIsoreController@show_auth')->name('show.auth');
// handle user input, authenticate coupon
Route::post('{couponcode}/authenticate','AppHttpControllersIsoreController@post_auth')->name('post.auth');
});
Route::group(['domain' => 'admin.domain.com'], function()
{
Auth::routes([
'register' => false, // Register Route
'reset' => false, // Reset Password Route
'verify' => false, // Email Verification Route
]);
Route::post('/atsijungti', 'AppHttpControllersHomeController@logout')->name('logout');
Route::get('/', 'AppHttpControllersKuponaiController@index')->name('dashboard');
Route::get('/kodas', 'AppHttpControllersKuponaiController@patvirtinimo_kodas')->name('patvirtinimo.kodas');
//Prideti kuponus
Route::get('/prideti/kuponus', 'AppHttpControllersKuponaiController@prideti_kupona_view')->name('prideti.view');
Route::post('/', 'AppHttpControllersKuponaiController@prideti_kupona_post')->name('prideti.post');
});
Admin.domain.com предназначен для создания и администрирования функций, таких как добавление заказов и других вещей, список клиентов и так далее.
Clients.domain.com поддомен для клиентов, где они получат URL-адрес в почте, щелкните его и получите форму, в которой им нужно написать код подтверждения заказа, и там напишите, если идентификатор купона в ссылке и код подтверждения заказа совпадают с почтой, найденной в базе данных, и совпадают, тогда они будут перенаправлены на представление, где указаны все детали заказа.
Проблема в том, как проверить все в промежуточном программном обеспечении и не предоставлять доступ клиенту, если код подтверждения и почта не совпадают в БД. Потому что я могу что-то сделать в контроллере для проверки, но я не могу ограничить просмотр блейда заказа, если кто-то идет напрямую. PS код подтверждения — bcrypt
Другой вопрос, как ограничить запросы авторизации формы для одного заказа по идентификатору, например, 5 неудачных попыток за 30 минут.
Ответ №1:
Для запросов на ограничение вы можете использовать промежуточное программное обеспечение throttle.
Для проверки наличия электронной почты и кода купона в базе данных или нет, вы можете создать промежуточное программное обеспечение
class AuthenticateCouponCode {
/**
* Handle an incoming request.
*
* @param IlluminateHttpRequest $request
* @param Closure $next
* @return mixed
*/
public function handle($request, Closure $next) {
if (!CouponCode::where('coupon_code', $request-coupon_code)->where('email', $request->email)->exists()) {
// Do redirection or thow some error to user here.
}
return $next($request);
}
}
А затем добавьте это промежуточное программное обеспечение в маршруты заказов.
Комментарии:
1. и куда я должен передавать эти запросы в промежуточном ПО? что я должен написать в своих контроллерах