laravel 中的自定义中间件以获取订单信息
Custom middleware in laravel for order info
所以我有两个 sub-domains orders.domain.com 和 admin.domain.com
这是我的 web.php
Route::group(['domain' => 'orders.domain.com'], function()
{
Route::get('/', 'App\Http\Controllers\IsoreController@index')->name('view.klientas');
// view authenticated coupon
Route::get('{couponcode}/view', 'App\Http\Controllers\IsoreController@view')->name('view.show');
// show coupon authenticate form
Route::get('{couponcode}/auth','App\Http\Controllers\IsoreController@show_auth')->name('show.auth');
// handle user input, authenticate coupon
Route::post('{couponcode}/authenticate','App\Http\Controllers\IsoreController@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', 'App\Http\Controllers\HomeController@logout')->name('logout');
Route::get('/', 'App\Http\Controllers\KuponaiController@index')->name('dashboard');
Route::get('/kodas', 'App\Http\Controllers\KuponaiController@patvirtinimo_kodas')->name('patvirtinimo.kodas');
//Prideti kuponus
Route::get('/prideti/kuponus', 'App\Http\Controllers\KuponaiController@prideti_kupona_view')->name('prideti.view');
Route::post('/', 'App\Http\Controllers\KuponaiController@prideti_kupona_post')->name('prideti.post');
});
Admin.domain.com 用于创建和管理功能,如添加订单和其他客户列表等。
Clients.domain.com 客户的子域,他们将在邮件中获得 url 单击它并获取他们需要填写订单确认代码的表格,如果优惠券 ID 在 link 并在数据库中找到带有邮件的订单确认代码并匹配,然后它们将被重定向到包含所有订单详细信息的视图。
如果确认代码和邮件在数据库中不匹配,如何检查中间件中的所有内容以及不授予客户端访问权限的问题。因为我可以在控制器中做一些检查,但如果有人直接去,我不能限制订单视图 blade。
P.S。确认码是 bcrypt
其他问题如何通过 ID 限制对一个订单的授权请求,例如每 30 分钟 5 次错误尝试。
对于限制请求,可以使用throttle中间件。
要检查数据库中是否存在电子邮件和优惠券代码,您可以创建一个中间件
class AuthenticateCouponCode {
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $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);
}
}
然后将这个中间件添加到订单路由中。
所以我有两个 sub-domains orders.domain.com 和 admin.domain.com
这是我的 web.php
Route::group(['domain' => 'orders.domain.com'], function()
{
Route::get('/', 'App\Http\Controllers\IsoreController@index')->name('view.klientas');
// view authenticated coupon
Route::get('{couponcode}/view', 'App\Http\Controllers\IsoreController@view')->name('view.show');
// show coupon authenticate form
Route::get('{couponcode}/auth','App\Http\Controllers\IsoreController@show_auth')->name('show.auth');
// handle user input, authenticate coupon
Route::post('{couponcode}/authenticate','App\Http\Controllers\IsoreController@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', 'App\Http\Controllers\HomeController@logout')->name('logout');
Route::get('/', 'App\Http\Controllers\KuponaiController@index')->name('dashboard');
Route::get('/kodas', 'App\Http\Controllers\KuponaiController@patvirtinimo_kodas')->name('patvirtinimo.kodas');
//Prideti kuponus
Route::get('/prideti/kuponus', 'App\Http\Controllers\KuponaiController@prideti_kupona_view')->name('prideti.view');
Route::post('/', 'App\Http\Controllers\KuponaiController@prideti_kupona_post')->name('prideti.post');
});
Admin.domain.com 用于创建和管理功能,如添加订单和其他客户列表等。
Clients.domain.com 客户的子域,他们将在邮件中获得 url 单击它并获取他们需要填写订单确认代码的表格,如果优惠券 ID 在 link 并在数据库中找到带有邮件的订单确认代码并匹配,然后它们将被重定向到包含所有订单详细信息的视图。
如果确认代码和邮件在数据库中不匹配,如何检查中间件中的所有内容以及不授予客户端访问权限的问题。因为我可以在控制器中做一些检查,但如果有人直接去,我不能限制订单视图 blade。 P.S。确认码是 bcrypt
其他问题如何通过 ID 限制对一个订单的授权请求,例如每 30 分钟 5 次错误尝试。
对于限制请求,可以使用throttle中间件。
要检查数据库中是否存在电子邮件和优惠券代码,您可以创建一个中间件
class AuthenticateCouponCode {
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $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);
}
}
然后将这个中间件添加到订单路由中。