首页 > 解决方案 > laravel 护照 api 中非身份验证 url 的身份验证检查

问题描述

我正在为我的 Laravel 5.4 API 使用护照身份验证。这里我有一个用于公司详细信息的 api,它是一个非身份验证 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。

标签: laravellaravel-5

解决方案


你的默认保护设置是什么?

Auth::check()Auth::guard(null)->check()使用当前默认守卫。

如果你想检查一个 api,你可能想像api你的auth中间件在你使用auth:api.

Auth::guard('api')->check()告诉它显式使用api守卫而不是默认值,这可能是任何东西,因为我们不知道你设置了什么。

auth中间件运行时,它实际上会根据传递给它的守卫以及它可以从哪个守卫解析用户来为您设置默认守卫。这就是为什么你可以调用Auth::user()并从正确的守卫那里得到正确的用户,因为中间件将当前设置为解析用户的那个。(调用具有此中间件的路由时)


推荐阅读