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

问题描述 投票:0回答:2

我在使用Laravel 5.7电子邮件验证时遇到问题。

使用Laravel的电子邮件验证后,如果我没有登录,则会强制我进入登录页面。

这就是我们需要的:我们为用户的电子邮件验证启用代码。因此,当有人注册时,我们要验证用户电子邮件。我们希望用户在网站上注册,要求用户验证电子邮件地址,在验证之前他们不能做任何事情 - 这对我来说没问题。

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

未注册的普通用户也会进入登录页面并强制验证或登录。

虽然我们希望注册的唯一用户需要验证。这是有效的。

所有未订阅的普通用户都可以轻松使用网站。目前他们将要登录页面

到目前为止我做了什么添加了以下代码

class User extends Authenticatable implements MustVerifyEmail

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

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

验证电子邮件后

protected $redirectTo = '/dashboard';

它工作正常,但是,

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

laravel laravel-5.7 email-verification
2个回答
0
投票

尝试添加除方法和检查网址回家

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

0
投票

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

在您的控制器文件中。

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

© www.soinside.com 2019 - 2024. All rights reserved.