laravel从控制器呼叫路由

时间:2016-10-02 14:28:04

标签: php laravel authentication oauth laravel-5.3

我现在正在Laravel写一个API,并使用护照。我的客户端将使用它自己的API,因此我在Passport中使用个人访问。

我不想在POST请求中显示我的oauth路由和授予id或秘密,所以我创建了一条路由,用户也发布了登录信息,然后处理向oauth / token发送POST请求路线,如下,

protected function authenticate(Request $request) {
        //return $request->input();
        //return Response::json($this->client);
        $email = $request->input('username');
            $password = $request->input('password');
            $request->request->add([
                'username' => $email,
                'password' => $password,
                'grant_type' => 'password',
                'client_id' => $this->client->id,
                'client_secret' => $this->client->secret,
                'scope' => '*'
            ]);

            $tokenRequest = Request::create(
                env('APP_URL').'/oauth/token',
                'post'
            );

            return Route::dispatch($tokenRequest)->getContent();

        }

我的问题是我的身份验证返回200,无论oauth登录是否成功。有没有办法从控制器触发路由并返回该代码而不是从http响应调用它的方法?

1 个答案:

答案 0 :(得分:1)

这应该可以解决问题。

$data = [
        'grant_type'=> 'password',
        'client_id'=> 99,
        'client_secret'=> 'hgfhfhjnhnjnjnjnj',
        'username'=> $request->username,
        'password'=> $request->password,
        'scopes'=> '[*]'
    ];
$request = Request::create('/oauth/token', 'POST', $data);
return app()->handle($request);