Routes Laravel 5.1-重定向每个页面上的特定用户

Routes Laravel 5.1-重定向每个页面上的特定用户,routes,laravel-5.1,url-redirection,Routes,Laravel 5.1,Url Redirection,我正在制作一个网站,用户可以在网站启动前注册。然而,当拥有特定电子邮件地址的人注册时,他们已经可以访问完整的网站,其他人则被列入等待名单 因此,假设每个拥有gmail地址的人都能访问gmail,我希望其他人都能被重定向到页面/等待列表 例如: Gmail用户: Route::get('favorites', 'FavoriteController@index'); Route::get('favorites', 'FavoriteController@index') Hotmail用户:

我正在制作一个网站,用户可以在网站启动前注册。然而,当拥有特定电子邮件地址的人注册时,他们已经可以访问完整的网站,其他人则被列入等待名单

因此,假设每个拥有gmail地址的人都能访问gmail,我希望其他人都能被重定向到页面/等待列表


例如:

Gmail用户:

Route::get('favorites', 'FavoriteController@index');
Route::get('favorites', 'FavoriteController@index')
Hotmail用户:

Route::get('favorites', 'FavoriteController@index');
Route::get('favorites', 'FavoriteController@index')
->让这个重定向到


是否有一种简单、快捷的方法可以对每条路线执行此操作,例如使用if,就像这样

if(substr($user->email, -9)!= "@gmail.com")
{
    always redirect my routes to "Waitlist"
}

好的,感谢用户@ihue,我知道解决方案

我必须创建一个中间件,在用户每次输入URL时检查其电子邮件

我是这样做的


我使用

php artisan make:middleware EmailRedirectMiddleware

然后在中间件中,我编写了if循环

<?php

namespace App\Http\Middleware;

use Auth;
use Closure;

class EmailRedirectMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $user = Auth::User();
        if(substr($user->email, -9) != "@gmail.com")
        {
            return redirect('waitinglist');
        }

        return $next($request);
    }
}
第一行检查用户是否登录,第二行检查登录用户有哪些电子邮件。
如果用户没有使用Gmail地址,他将被重定向到
等待列表
,就像我在中间件中编码的那样

您可以在以下函数中更改多用户的用户重定向。 但是,如果laravel版本更新,您在此处的更改可能会被取消

转到文件路径并更改功能

vendor\laravel\framework\src\illumb\Foundation\Auth\AuthenticatesUser.php


我会在您的登录功能中执行此逻辑。:)如果你需要帮助,请告诉我。发布您的登录功能。我会帮你的。@ihue但是如果用户手动输入url呢?哦。不,他们不能。发布你的登录功能。当他们提交表单时,你检查它。
protected function handleUserWasAuthenticated(Request $request, $throttles)
    {
        if ($throttles) {
            $this->clearLoginAttempts($request);
        }

        if (method_exists($this, 'authenticated')) {
            return $this->authenticated($request, Auth::user());
        }

        $user = Auth::user();
        $type = $user->Rtype;

        if($type==1){
            return redirect()->intended('/admin/dashboard');
        }elseif($type==2){
            return redirect()->intended('/admin/dashboard');
        }elseif($type==3){
            return redirect()->intended('/');
        }else{
        return redirect()->intended($this->redirectPath());
        }

    }