【问题标题】:Authentication check for non auth url in laravel passport apilaravel 护照 api 中非身份验证 url 的身份验证检查
【发布时间】:2018-08-13 06:00:07
【问题描述】:

我正在为我的 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。

【问题讨论】:

  • 所以您有一个不需要身份验证的部分,但您仍想获得经过身份验证的用户?
  • 带有auth:api 的路由如果来宾会出错? auth()->check() 在别处工作?

标签: laravel laravel-5


【解决方案1】:

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

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

如果你想检查一个 api,你可能想使用 api 保护,就像你使用 auth:api 时使用的 auth 中间件一样。

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

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

【讨论】:

    猜你喜欢
    • 2019-06-14
    • 2019-05-21
    • 1970-01-01
    • 2018-06-16
    • 2016-03-16
    • 2017-01-06
    • 2019-02-28
    • 2011-04-13
    • 2018-11-06
    相关资源
    最近更新 更多