在laravel 5.5中登录用户的Dingo“Unauthenticated”错误消息

时间:2017-11-18 04:48:09

标签: php laravel laravel-5.5 dingo-api

我正在使用[Dingo/api][1] laravel包来创建API。之前我和它一起工作过,我没有这个问题。

这是api.php文件中的路线:

$api = app('Dingo\Api\Routing\Router');
$api->version('v1', ['prefix' => 'v1', 'namespace' => 'App\Http\Controllers'], function ($api) {

    $api->group(['prefix' => 'auth'], function ($api) {
        $api->post('signIn', 'Auth\LoginController@signIn');
    });

    $api->group(['middleware' => 'api.auth'], function ($api) {
        $api->get('signOut', ['uses' => 'Auth\LoginController@signOut']);

        $api->get('test', function () {
            return response()->json(['foo' => 'bar']);
        });
    });

});

/signIn路由正常工作并响应可在其他受保护端点(如/test/test目录中使用的令牌正常工作。

但我希望退出用户并致电/signOut路由,并始终对此做出回应:

{
    "success": false,
    "message": "Unauthenticated.",
    "status_code": 500
}

这是signOut中的LoginController方法:

public function signOut()
    {
        //return 'Hiiiii Alll';
        try {
            $token = \Tymon\JWTAuth\Facades\JWTAuth::getToken();
            \Tymon\JWTAuth\Facades\JWTAuth::invalidate($token);
            return [
                'success' => true,
                'message' => 'You Signed Out Successfully'
            ];

        } catch (\Exception $e) {
            return $this->response->error('Something went wrong', 404);
        }
    }

即使我从该方法返回一个Simple字符串它也没有运行,似乎问题出现在我使用的['middleware' => 'api.auth']但是如果它是正确的,为什么test目录中的问题没有出现在同一路线组?

更新(解决方案):

我发现应该在logout方法的SignOut方法中将__construct()更改为LoginController

public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

0 个答案:

没有答案