在中间件中使用 Auth::user
Using Auth::user in middleware
我正在尝试检查输入的 URL 是否与数据库中经过身份验证的用户 slug 相同。因此,如果用户转到 example.com/user/bob-smith 而实际上是 Bob Smith 登录,应用程序将让 Bob 继续,因为他在用户 table 中的 slug 是 bob-smith.
我已经注册了中间件,但是当我注册时
public function handle($request, Closure $next)
{
if($id != Auth::user()->slug){
return 'This is not your page';
}
else{
return $next($request);
}
}
我明白了
Class 'App\Http\Middleware\Auth' not found
我不确定如何在中间件内部使用它。有人可以帮忙吗?
这很容易。您似乎没有为 Auth
facade 导入命名空间。
因此要么添加
<?php namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth; // <- import the namespace
class YourMiddleware {
...
}
在 class 声明之上或使用完全限定的 class 内联名称
if ($id != \Illuminate\Support\Facades\Auth::user()->slug) {
或者你可以在构造函数中注入Guard
实例
<?php namespace App\Http\Middleware;
use Closure;
use Illuminate\Contracts\Auth\Guard;
class YourMiddleware {
protected $auth;
public function __construct(Guard $auth)
{
$this->auth = $auth;
}
public function handle($request, Closure $next)
{
...
if ($id != $this->auth->user()->slug) {
...
}
}
我正在尝试检查输入的 URL 是否与数据库中经过身份验证的用户 slug 相同。因此,如果用户转到 example.com/user/bob-smith 而实际上是 Bob Smith 登录,应用程序将让 Bob 继续,因为他在用户 table 中的 slug 是 bob-smith.
我已经注册了中间件,但是当我注册时
public function handle($request, Closure $next)
{
if($id != Auth::user()->slug){
return 'This is not your page';
}
else{
return $next($request);
}
}
我明白了
Class 'App\Http\Middleware\Auth' not found
我不确定如何在中间件内部使用它。有人可以帮忙吗?
这很容易。您似乎没有为 Auth
facade 导入命名空间。
因此要么添加
<?php namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth; // <- import the namespace
class YourMiddleware {
...
}
在 class 声明之上或使用完全限定的 class 内联名称
if ($id != \Illuminate\Support\Facades\Auth::user()->slug) {
或者你可以在构造函数中注入Guard
实例
<?php namespace App\Http\Middleware;
use Closure;
use Illuminate\Contracts\Auth\Guard;
class YourMiddleware {
protected $auth;
public function __construct(Guard $auth)
{
$this->auth = $auth;
}
public function handle($request, Closure $next)
{
...
if ($id != $this->auth->user()->slug) {
...
}
}