【问题标题】:Limiting Page Refresh on Laravel在 Laravel 上限制页面刷新
【发布时间】:2020-09-05 13:56:18
【问题描述】:

我想限制登录用户多次刷新某个页面(例如重复按 F5 键)。除了这样计算刷新次数并保存在数据库中,还有其他更简单的方法吗?

public function myPage()
{
    // Page is a table storing refresh count of pages
    $page = Page::where('user_id', Auth::user()->id)->get();
    $refresh_count = $page->refresh_count;
    
    if($refresh_count > 10){
       // logout user
    }else{
        $refresh_count = $page->refresh_count + 1;
        $page->update(['refresh_count' => $refresh_count]);
    }
    return view('mypage');
}

【问题讨论】:

  • 使用节流中间件
  • 正如@alzafan 所说,节流是要走的路。如果您想了解节流阀的工作原理:stackoverflow.com/questions/63637524/…
  • 我试过了,效果很好!他们的页面在超出限制后会引发错误。我怎样才能再次访问该页面?文档中没有说明
  • 会被限制1分钟;在我分享的 SO 链接中提到了 :)

标签: laravel


【解决方案1】:

您可以使用 Throttle 中间件来限制对路由或页面刷新的访问。

throttle 中间件接受两个参数,用于确定在给定分钟数内可以发出的最大请求数。例如,让我们指定经过身份验证的用户每分钟可以访问以下路由组 60 次:

Route::middleware('auth', 'throttle:60,1')->group(function () {
    Route::get('/user', function () {
        //
    });
});

更多详情see documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-15
    • 2019-02-01
    • 2020-03-21
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    相关资源
    最近更新 更多