如何为 Laravel 中的域创建过滤器
How to create a filter for a domain in Laravel
我正在尝试创建一个适用于特定域的过滤器,并在用户超过配额时将用户从他们尝试访问的任何页面重定向。到目前为止,代码根本没有重定向。
这是我目前在 filters.php
中的内容:
Route::filter('domain', function () {
if (stripos(Request::root(), Config::get('domains.main')) !== false) {
if (Auth::check()) {
$user = Auth::user();
$max_quota = Plan::where('id', $user->plan_id)->where('is_active', true)->pluck('max_quota');
$quota_used = Quota::where('user_id', $user->id)->count();
if (empty($max_quota)) {
return Redirect::to('account/error/inactive');
} elseif ($quota_used >= $max_quota) {
return Redirect::to('account/error/over_quota');
}
}
}
});
即使我把它放在 routes.php
下:
Route::group(['domain' => Config::get('domains.main')], function () {
Route::filter('*', function () { /* Same code here... */ });
}
然后进入过滤函数,成功检查条件,但仍然没有发生重定向。
我想我在这里遗漏了不止一个关键点。想法?
为了完成这项工作,我需要更改:
Route::group(['domain' => Config::get('domains.main')], function () {
收件人:
Route::group(['domain' => Config::get('domains.main'), 'before' => 'domain'], function () {
我还需要为这一行添加重定向循环保护:
if (Auth::check()) {
这样就变成了:
if (Auth::check() && !strpos(Request::fullUrl(), 'account/error')) {
我正在尝试创建一个适用于特定域的过滤器,并在用户超过配额时将用户从他们尝试访问的任何页面重定向。到目前为止,代码根本没有重定向。
这是我目前在 filters.php
中的内容:
Route::filter('domain', function () {
if (stripos(Request::root(), Config::get('domains.main')) !== false) {
if (Auth::check()) {
$user = Auth::user();
$max_quota = Plan::where('id', $user->plan_id)->where('is_active', true)->pluck('max_quota');
$quota_used = Quota::where('user_id', $user->id)->count();
if (empty($max_quota)) {
return Redirect::to('account/error/inactive');
} elseif ($quota_used >= $max_quota) {
return Redirect::to('account/error/over_quota');
}
}
}
});
即使我把它放在 routes.php
下:
Route::group(['domain' => Config::get('domains.main')], function () {
Route::filter('*', function () { /* Same code here... */ });
}
然后进入过滤函数,成功检查条件,但仍然没有发生重定向。
我想我在这里遗漏了不止一个关键点。想法?
为了完成这项工作,我需要更改:
Route::group(['domain' => Config::get('domains.main')], function () {
收件人:
Route::group(['domain' => Config::get('domains.main'), 'before' => 'domain'], function () {
我还需要为这一行添加重定向循环保护:
if (Auth::check()) {
这样就变成了:
if (Auth::check() && !strpos(Request::fullUrl(), 'account/error')) {