我设置了Laravel Passport,并开始创建一些Get路由来获取一些数据,这些工作正常。
现在我试图发布以获取身份验证令牌,但目前无效:
这是我打电话的路线(获取路线有效,后路线不起作用):
我的ApiController中的方法看起来像这样:
Route::group(['middleware' => 'auth:api'], function ()
{;
Route::get('users', ['as' => 'users', 'uses' => 'ApiController@users']);
Route::post('login/{id}/{name}', ['as' => 'login', 'uses' => 'ApiController@login']);
});
修改
我不知何故设法在数小时后完成这项工作,但仍然不明白。
首先我做了以下事情:
public function login(Request $request, $id, $name)
{
if($request->isMethod('post'))
{
$id = $request->id;
$name = $request->name;
$inquiry = new Inquiry();
$inquiry->user_id = $id;
$inquiry->user_name = $name;
if($inquiry->save())
{
return redirect()->route('inquiry.index')->with('success', 'Success.');
}
else
{
return redirect()->route('inquiry.index')->with('error', 'An error accured.')->withInput();
}
}
else
{
dd("Use Post.");
}
}
有了这个我可以得到代码参数的标记,但我认为有更好的方法来做到这一点。
最后,我现在获得了访问+刷新令牌:
但必须有更好的方法来获取回调请求的代码令牌($ request->代码),而不是转储它并复制它。
答案 0 :(得分:0)
问题是你的路由组内有登录路由,其上有auth:api。这意味着用户需要进行身份验证才能进行身份验证。只需删除组外的登录路由,您就可以了。
答案 1 :(得分:0)
您应该在Passport::routes
的启动方法中调用AuthServiceProvider
方法。 此方法将注册发布访问令牌和撤销访问令牌,客户端和个人访问令牌所需的路由:
public function boot()
{
$this->registerPolicies();
Passport::routes();
}
/oauth/authorize
路由已由Passport::routes
方法定义。您无需手动定义此路线。