早在我使用laravel 5.2时,我使用第三方软件包https://github.com/tymondesigns/jwt-auth/进行基于JWT的身份验证.我们只需传递用户名和密码即可获得令牌.
现在在laravel 5.3中引入护照我想要进行基于JWT的身份验证,但护照要求我指定client_id和client_secret以及用户名和密码.在tymondesigns/jwt-auth中没有.
如果我在没有client_id的情况下发出请求,那么它会抛出一个错误http://pix.toile-libre.org/upload/original/1482908288.png但是当我传递client_id和client_secret然后它工作正常http:// pix. toile-libre.org/upload/original/1482908143.png
如何使用用户名和密码在laravel 5.3和passport中发出JWT请求,而不指定client_id和client_secret.
Pha*_*007 42
所以,最后我回答了我自己的问题.希望这将有助于面临类似问题的人.
可以使用Laravel 5.3护照完成JWT身份验证,只需按照以下步骤操作:
或按照以下步骤操作:
Laravel\Passport\PassportServiceProvider::class,到您的应用提供商HasApiTokens特征到您的用户模型完成后,创建一个UserController并在其中添加以下方法:
public function auth(Request $request)
{
$params = $request->only('email', 'password');
$username = $params['email'];
$password = $params['password'];
if(\Auth::attempt(['email' => $username, 'password' => $password])){
return \Auth::user()->createToken('my_user', []);
}
return response()->json(['error' => 'Invalid username or Password']);
}
public function index(Request $request)
{
return $request->user();
}
Run Code Online (Sandbox Code Playgroud)
在routes/api.php中,添加以下路由:
Route::post('auth', 'UserController@auth');
Route::group(['middleware' => 'auth:api'], function(){
Route::resource('user', 'UserController@index');
});
Run Code Online (Sandbox Code Playgroud)
现在http://localhost:8000/auth使用电子邮件地址和密码发出POST请求,如屏幕截图所示(http://pix.toile-libre.org/upload/original/1483094937.png)这将为您提供accessToken,您可以使用此令牌使用Authorization标头在您的应用程序中发出其他请求,Bearer XXX其中xxx是您从/ api/auth端点收到的accessToken.
现在,/api/user使用Authorization标头和标记值发出GET请求,这将返回经过身份验证的用户的详细信息.(例如:http://pix.toile-libre.org/upload/original/1483095018.png)
我也在我的博客上发布了这些步骤:http://chatterjee.pw/larvel-passport-jwt-authentication/
我希望这有帮助!
| 归档时间: |
|
| 查看次数: |
12106 次 |
| 最近记录: |