Tru*_*ode 4 php laravel laravel-5
我正在使用 Laravel 5.7 电子邮件验证。当我尝试登录时,它说 - Your email address is not verified
http://joxi.ru/n2YqYJaIo1XGO2
我需要将此消息更改为另一种语言,但找不到更改的位置。在资源/语言中 - 有验证和其他消息,但找不到这个。谢谢。
您必须实现一个可以使用 artisan 命令创建的自定义中间件:
php artisan make:middleware EnsureEmailIsVerified
确保EmailIsVerified.php
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Contracts\Auth\MustVerifyEmail;
class EnsureEmailIsVerified
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (! $request->user() ||
($request->user() instanceof MustVerifyEmail &&
! $request->user()->hasVerifiedEmail())) {
return $request->expectsJson()
? abort(403, 'YOUR CUSTOM ERROR HERE')
: Redirect::route('verification.notice');
}
return $next($request);
}
}
Run Code Online (Sandbox Code Playgroud)
您必须将verified内核文件中的密钥映射到新的中间件。
app\Http\Kernel.php(在底部):
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \App\Http\Middleware\EnsureEmailIsVerified::class, // the changed line
];
Run Code Online (Sandbox Code Playgroud)
我在文件功能中使用了 Notepad++ 的 find 并扫描了我的 Laravel 项目中的所有文件:“您的电子邮件未经验证”
它想出了一场比赛:
\vendor\laravel\framework\src\Illuminate\Auth\Middleware\EnsureEmailIsVerified.php
这是哪个文件:
<?php
namespace Illuminate\Auth\Middleware;
use Closure;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Contracts\Auth\MustVerifyEmail;
class EnsureEmailIsVerified
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle($request, Closure $next)
{
if (! $request->user() ||
($request->user() instanceof MustVerifyEmail &&
! $request->user()->hasVerifiedEmail())) {
return $request->expectsJson()
? abort(403, 'Your email address is not verified.')
: Redirect::route('verification.notice');
}
return $next($request);
}
}
Run Code Online (Sandbox Code Playgroud)
我猜如果你改变这一行:? abort(403, 'Your email address is not verified.')
无论您希望错误是什么,例如: ? abort(403, 'Please, verify your email.')
它会显示那个。(如果您尝试,请确认这一点)。
此解决方案存在一个小问题。由于您的.gitignore文件告诉 git 忽略供应商文件夹,因此推送时不会将其推送到外部存储库。
您将需要更改.gitignore文件。
Laravel 更新也将恢复此更改,因此您必须重写它,现在此答案的顶部有一个更好的解决方案。