Routes Laravel 5.1-重定向每个页面上的特定用户
我正在制作一个网站,用户可以在网站启动前注册。然而,当拥有特定电子邮件地址的人注册时,他们已经可以访问完整的网站,其他人则被列入等待名单 因此,假设每个拥有gmail地址的人都能访问gmail,我希望其他人都能被重定向到页面/等待列表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用户:
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());
}
}