Mic*_*l N 5 laravel laravel-middleware
我正在尝试检查输入的URL是否与数据库中经过身份验证的用户slug相同.因此,如果用户访问example.com/user/bob-smith并且实际上Bob Smith已登录,则应用程序将让Bob继续,因为他在User表中的slug是bob-smith.
我有中间件注册,但是当我这样做
public function handle($request, Closure $next)
{
if($id != Auth::user()->slug){
return 'This is not your page';
}
else{
return $next($request);
}
}
Run Code Online (Sandbox Code Playgroud)
我明白了
找不到"App\Http\Middleware\Auth"类
我不确定如何在中间件中使用它.任何人都可以帮忙吗?
这很容易.看起来您没有为Authfacade 导入名称空间.
因此要么添加
<?php namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth; // <- import the namespace
class YourMiddleware {
...
}
Run Code Online (Sandbox Code Playgroud)
在类声明之上或使用内联的完全限定类名
if ($id != \Illuminate\Support\Facades\Auth::user()->slug) {
Run Code Online (Sandbox Code Playgroud)
或者,您可以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) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7854 次 |
| 最近记录: |