首页 文章

Laravel 5.6.28:Auth Middleware重定向到Login(句柄未调用)

提问于
浏览
2

在laravel中使用我的自定义防护来验证用户的Auth中间件,但每当我使用该中间件调用路由时,我得到的错误是:

路由[登录]未定义 .

现在,我只是想确保调用中间件 . 这是我到目前为止所做的:

public function handle($request, Closure $next, $guard = null)
{ 
    return "hi";
    if (Auth::guard('api')->guest()) {
        if ($request->ajax() || $request->wantsJson()) {
            return response('Unauthorized.', 401);
        }

        return redirect()->guest('hi/login');
    }

    return $next($request);
}

以上是authenticate.php的句柄方法 . 这是我守卫的代码

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'access_token',
        'provider' => 'users',
    ],
],
 'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],
],

路由:这是路由组,其中我有一个实现auth中间件的子组 Route::group(['prefix' => 'app'], function() use ($router) { }

这是我在 Route::get('/subscribedcompanies','PromotionController@getFavoriteCompanies'); 上测试中间件的路线

还有一件事我想添加的是我正在尝试基于数据库中的access_token进行身份验证 . 我更改了登录控制器中的身份验证和凭据功能,如下所示:

protected function credentials(Request $request)
{
    return array_merge($request->header('authorization'));
}

public function authenticate(Request $request)
{
    $credentials = $request->header('authorization');

    if (Auth::attempt($credentials)) {
        // Authentication passed...
        return redirect()->intended('/');
    }
}

2 回答

  • 0

    只需将您的登录路线命名为 login Route::post('/login', 'LoginController@index')->name('login');

  • 1

    感谢帮助人员 . 我将制作一个自定义中间件进行身份验证 .

相关问题