如何解决laravel中的自定义中间件以获取订单信息
所以我有两个子域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并在数据库中找到包含邮件的订单确认代码并匹配,然后将它们重定向到所有订单详细信息的视图。
如果确认代码和邮件在db中不匹配,则如何检查中间件中的所有内容并不赋予客户端访问权限的问题。因为我可以在控制器中执行某些操作以进行检查,但是如果有人直接去,我就不能限制订单视图刀片。 附言确认码为bcrypt
其他问题是如何通过ID(例如每30分钟5次错误尝试)对一个订单进行限制表单身份验证请求。
解决方法
对于限制请求,您可以使用油门中间件。
要检查数据库中是否存在电子邮件和优惠券代码,可以创建一个中间件
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);
}
}
然后将该中间件添加到订购路线。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。