Lumen 中的中间件身份验证 [未找到“身份验证”类]

Posted

技术标签:

【中文标题】Lumen 中的中间件身份验证 [未找到“身份验证”类]【英文标题】:Middleware Auth in Lumen [ Class 'Auth' not found ] 【发布时间】:2017-06-14 03:11:21 【问题描述】:

我正在使用 Lumen 5.2(由 Laravel 提供)

我弄错了: 致命错误:第 10 行的 C:\wamp64\www\project\app\Http\Middleware\AuthToken.php 中未找到“Auth”类

bootstrap/app.php

$app->routeMiddleware([
   'auth' => App\Http\Middleware\AuthToken::class,
]);

中间件/AuthToken.php

namespace App\Http\Middleware;
use Closure;
use Auth;

class AuthToken

    public function handle($request, Closure $next)
    
        if(Auth::check())
            return $next($request);
        else
            abort(401);
        
    

UserController.php

使用身份验证;

public function login(Request $request)
    if ($request->has('password')) 
        $user = User:: where("user_password", "=", $request->input('password'))->first();
        if ($user) 
            $token=str_random(60);
            $user->api_token=$token;
            $user->save();

            return redirect('admin/dashboard');
        

routes.php

/* ADMIN */

$app->get('/admin', function () use ($app) 
    return $app->make('view')->make('admin.login');
);

$app->group(['prefix' => 'admin', 'middleware' => 'auth'], function () use ($app)

    $app->get('dashboard', function () use ($app) 
        return $app->make('view')->make('admin.dashboard');
    );

);

如何登录有什么问题?

编辑:我试过了

$app->routeMiddleware([
    'auth' => App\Http\Middleware\Authenticate::class,
]);

我只是未经授权。

【问题讨论】:

【参考方案1】:

Middleware/AuthToken.php 中像这样导入Auth 类:

use Illuminate\Support\Facades\Auth;

这里要使用Auth Facade,所以需要导入。

【讨论】:

我应该启用 $app->withFacades();在 app.php 中? 我确实启用了,我在 RegistersExceptionHandlers.php 第 32 行得到了 HttpException: 是的,您应该启用。 也许您没有登录用户? 我有一个用户已经直接到管理员/仪表板,但我如何启用会话【参考方案2】:
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;

class AuthToken

    public function handle($request, Closure $next)
    
        if(Auth::check())
            return $next($request);
        else
            abort(401); //works here
        
    

【讨论】:

以上是关于Lumen 中的中间件身份验证 [未找到“身份验证”类]的主要内容,如果未能解决你的问题,请参考以下文章

在 Lumen 中创建多个身份验证提供程序

不使用数据库的 Lumen HTTP 基本身份验证

未定义身份验证保护驱动程序 [api]。流明、野狗、JWTAuth

如何在带警卫的流明中实现多重身份验证?

Lumen:没有用户表的 JWT 身份验证

如何使用相同的身份验证保护验证多种类型的用户 [Lumen]