Auth Laravel检查未在自定义控制器中工作的用户的身份验证

时间:2018-08-14 10:27:03

标签: laravel authentication

我已经使用防护在Laravel中创建了一个多身份验证。我添加了一个“管理员”防护和登录名,并且一切正常。另外,如果我查看不同警卫的身份验证状态,则它可以正常工作。如果我加载此日历页面,则它会返回auth true以及web或admin true,具体取决于登录者。

Route::get('/availability/calendar', function () {
  return view('app', ['data' => ['auth' => Auth::check(), 'id' => Auth::user()- 
>id, 'authWeb' => Auth::guard('web')->check(), 'authAdmin' => Auth::guard('admin')->check()]]);
})->middleware('auth:web,admin');

但是,如果我尝试在我创建的自定义控制器中访问Auth,则它对所有Auth :: check()以及卫兵网和admin都返回false,则返回false。我不明白为什么Auth在web.php中起作用,但在我的自定义控制器中却不能起作用。我在俯视什么吗,感谢您的帮助!

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class CustomController extends Controller
{

    public function get_customStuff_api() {
        $returnData = [];
        $returnData ['auth'] = Auth::check();
        $returnData ['web'] = Auth::guard('web')->check();
        $returnData ['admin'] = Auth::guard('admin')->check();

        return response()->json($returnData);

    }
}

2 个答案:

答案 0 :(得分:0)

我知道这是一个较老的问题,但我也遇到了这个问题。 我在 PHP 8.0.5 下使用 Laravel 8.12 版。 它对我有用的方法是将以下内容添加到文件 \app\Http\Kernel.php 中:

use Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful;

然后在 protected $middlewareGroups 属性内,在 api 中间件内添加:EnsureFrontendRequestsAreStateful::class, 所以它看起来像这样:

protected $middlewareGroups = [

       // 'web' => ...

        'api' => [
            EnsureFrontendRequestsAreStateful::class,
            'throttle:api',
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],
    ];

答案 1 :(得分:-1)

您检查此代码

命名空间App \ Http \ Controllers;

使用Illuminate \ Http \ Request; 使用Illuminate \ Support \ Facades \ Auth;

CustomController类扩展了Controller {

fs.readfile(dir + filename, 'utf8',async function(err, fileContent){
 if(err) throw err;
 var response =  await anotherAsyncServiceCall(fileContent);
 return response;
}).catch(function(exception){
  console.log('exception occured',exception);
});

}

我可以创建一个自定义控制器并使用类似的代码 https://laravel.com/docs/5.6/passport 检查邮递员并设置标题

public function get_customStuff_api() {
    $returnData = [];
    $returnData ['auth'] = Auth::user();
    $returnData ['web'] = Auth::guard('web')->user();
    $returnData ['admin'] = Auth::guard('admin')->user();

    return response()->json($returnData);

}