我正在制作一个网站,用户可以在发布之前进行注册。但是,当有特定电子邮件地址的人注册时,他们已经可以访问整个网站,其他人则被列入等候名单。
所以,让我们说拥有gmail地址的每个人都可以访问,我希望其他人可以重定向到页面/等待列表。
示例:的
Gmail用户:
Route::get('favorites', 'FavoriteController@index');
Hotmail用户:
Route::get('favorites', 'FavoriteController@index')
- >让这个重定向到
Route::get('waitlist', 'WaitlistController@index')
是否有一种简单,简单的方法可以为每条路线执行此操作,例如使用if,就像这样?
if(substr($user->email, -9)!= "@gmail.com")
{
always redirect my routes to "Waitlist"
}
答案 0 :(得分:1)
好的,所以感谢用户@ihue,我知道解决方案。
我必须创建一个middelware,每次输入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);
}
}
然后只需在您的routes.php
中,将中间件用于您想要的每条路线,就像这样。
Route::group(array('middleware' => 'auth'), function(){
Route::group(array('middleware' => 'App\Http\Middleware\EmailRedirectMiddleware'), function() {
Route::get('work', 'WorkController@index');
});
});
第一行检查用户是否已登录,第二行检查登录用户具有的电子邮件。
如果用户未使用Gmail地址,他将重定向到waitinglist
,就像我在中间件中编码一样
答案 1 :(得分:0)
您可以在以下功能中更改多用户的用户重定向。 但是如果laravel版本更新,您在此处的更改可能会被取消。
转到文件路径并更改功能
vendor \ laravel \ framework \ src \ illuminate \ Foundation \ Auth \ AuthenticatesUser.php
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());
}
}