Laravel Passport API中非身份验证URL的身份验证检查

时间:2018-08-13 06:00:07

标签: laravel laravel-5

我正在为我的Laravel 5.4 API使用护照身份验证。在这里我有一个用于公司详细信息的api,它是一个非auth api。我需要使用此URL中的auth检查登录用户是否喜欢这家公司...我如何做这个。

这是我的路线

   Route::get('/company/{company}','Api\V1\CompanyController@show');
Route::group(['middleware' => 'auth:api','prefix'=>'v1'], function(){
//auth urls
}

这是我的控制器

class CompanyController extends Controller
{
    public function show(Company $company,Request $request)
    {
        $data                           =   array();
        $flag                           =   0;
        $data['status']                 =   1;
        $data['message']                =   'success';
        $data['baseUrl']                =    url('/');
        $data['is_login']               =   Auth::check(); 

如果我在api标头中添加了身份验证令牌,则is_login始终返回false。

1 个答案:

答案 0 :(得分:2)

您的默认防护设置为什么?

Auth::check()Auth::guard(null)->check(),它使用当前的默认防护。

如果您要检查api,则可能想像使用api时使用auth中间件一样使用auth:api保护。

Auth::guard('api')->check()告诉它显式使用api防护而不是默认防护,因为我们不知道您的设置,所以可以使用任何防护。

运行auth中间件时,它实际上将为您设置默认的保护措施,具体取决于传递给它的保护措施以及可以从中解析用户的保护措施。这就是为什么您可以只调用Auth::user()并从正确的保护人员那里获取正确的用户的原因,因为中间件将电流设置为可以解决该用户的问题。 (当调用具有此中间件的路由时)