Laravel的电子邮件验证重定向到登录页面

时间:2019-04-26 13:10:33

标签: laravel laravel-5.7 email-verification

我在Laravel 5.7电子邮件验证中遇到问题。

使用Laravel的电子邮件验证后,如果我没有登录,这将迫使我进入登录页面。

这是我们需要的: 我们启用用于用户电子邮件验证的代码。因此,当有人注册时,我们想验证用户电子邮件。我们希望用户在网站上进行注册,要求用户验证电子邮件地址,并且他们在进行验证之前不能做其他事情-这对我来说是可以的。

我们的麻烦是,如果有新用户(未注册)进入我们的网站,我们的网站也会强制所有该用户进入登录页面。

未注册的普通用户也将进入登录页面,并被迫验证或登录。

虽然我们希望唯一注册的用户需要验证。哪个在工作。

所有未订阅的普通用户都可以使用easy网站。他们目前将在哪里登录页面

到目前为止我所做的 添加了以下代码

class User extends Authenticatable implements MustVerifyEmail

Auth::routes(['verify' => true]);

Route::get('profile', function () { })->middleware('verified');

验证电子邮件后

protected $redirectTo = '/dashboard';

工作正常,但是

我需要的是我不想强迫用户验证电子邮件,因为这阻止了用户访问我网站的主页。

2 个答案:

答案 0 :(得分:0)

尝试添加方法以外的内容,并检查网址首页

public function __construct()
{
  $this->middleware(['auth', 'verified'])->except('home');
}

答案 1 :(得分:0)

问题是您需要指定哪些页面将使用身份验证中间件。排除您的欢迎视图。

在您的控制器文件中。

public function __construct()
{
    $this->middleware('auth')->except('welcome');
}

public function home(){
    return view('welcome');
}

我使用的是“欢迎”视图,因为我相信您不会更改默认的Laravel安装代码,因此必须小心,因为视图“ home”是laravel登录后显示的默认页面。删除该页面的身份验证层,任何用户都可以访问您的系统。您必须更改此页面的代码或创建另一个视图。

在您的web.php文件中

Route::get('/', 'HomeController@home');

Laravel Docs - Controller Middleware