我在使用Laravel 5.7电子邮件验证时遇到问题。
使用Laravel的电子邮件验证后,如果我没有登录,则会强制我进入登录页面。
这就是我们需要的:我们为用户的电子邮件验证启用代码。因此,当有人注册时,我们要验证用户电子邮件。我们希望用户在网站上注册,要求用户验证电子邮件地址,在验证之前他们不能做任何事情 - 这对我来说没问题。
我们的麻烦是,如果新用户(未注册)访问我们的网站,我们的网站也将强制所有用户访问登录页面。
未注册的普通用户也会进入登录页面并强制验证或登录。
虽然我们希望注册的唯一用户需要验证。这是有效的。
所有未订阅的普通用户都可以轻松使用网站。目前他们将要登录页面
到目前为止我做了什么添加了以下代码
class User extends Authenticatable implements MustVerifyEmail
Auth::routes(['verify' => true]);
Route::get('profile', function () { })->middleware('verified');
验证电子邮件后
protected $redirectTo = '/dashboard';
它工作正常,但是,
我需要的是,我不想强迫用户验证电子邮件,因为这阻止用户访问我的网站的主页。
尝试添加除方法和检查网址回家
public function __construct()
{
$this->middleware(['auth', 'verified'])->except('home');
}
问题是你需要指定哪些页面将使用auth中间件。要排除您的欢迎视图。
在您的控制器文件中。
public function __construct()
{
$this->middleware('auth')->except('welcome');
}
public function home(){
return view('welcome');
}
我使用'欢迎'视图,因为我认为你不更改默认Laravel安装的代码,你必须小心,因为视图'home'是laravel在你登录后显示的默认页面。如果你删除了身份验证该页面的一层,任何用户都可以访问您的系统。您必须更改此页面的代码或创建另一个视图。
在您的web.php文件中
Route::get('/', 'HomeController@home');