首页 > 解决方案 > Laravel 在来宾中间件路由中访问 Auth

问题描述

我有一个使用来宾中间件的路由组

Route::group(['middleware' => 'guest'],function(){
    Route::resource('posts','PostController')->only(['show']);
});

我面临的问题是只有在帖子已被批准或所有者是授权用户时才能查看来自帖子资源的显示路线。

但问题是当我在访客中间件的 show route 中访问 Auth::id() 时,它说它是空的......

我是否必须为此制作新的中间件以进行检查,或者是否有解决方法?

if(is_null($post->approved_at)){
    if(Auth::id() === $post->user->id){
        return response()->json($post,200);
    }
    return abort(404);
}

return response()->json($post,200);

解决方案:

通过在 auth() 而不是 Auth::id() 中传递 api 保护来修复它,因为来宾用户无法访问 Auth 外观,但可以使用 auth api。

auth('api')->id();

标签: phplaravelauthenticationmiddleware

解决方案


推荐阅读